Какой ключ keyFile нужен google.auth.GoogleAuth ()? - PullRequest
1 голос
/ 07 марта 2020

Цель

Использование googleapis с функциями firebase. Получите токен JWT, чтобы функции firebase могли использовать служебную учетную запись с делегированием по всему домену для авторизации API G Suite, таких как каталог и диск.

Вопрос

Что входит в path.join ( );

Что такое __dirname Что такое 'jwt.keys.json'?

От этот пример: https://github.com/googleapis/google-api-nodejs-client/blob/master/samples/jwt.js

  // Create a new JWT client using the key file downloaded from the Google Developer Console
  const auth = new google.auth.GoogleAuth({
    keyFile: path.join(__dirname, 'jwt.keys.json'), // <---- WHAT GOES IN path.join()
    scopes: 'https://www.googleapis.com/auth/drive.readonly',
  });

Ошибка

Когда я запускаю

  const auth = new google.auth.GoogleAuth({
    keyFile: path.join(__dirname, "TEST"), // <-- __dirname == /srv/ at runtime
    scopes: 'https://www.googleapis.com/auth/drive.readonly',
  });

Из журналов GCP я получаю это ошибка:

Error: ENOENT: no such file or directory, open '/srv/TEST'

Очевидно, TEST недопустимо, но является '/srv/?

Что такое keyFile, путь к файлу? учетные данные?

Другой пример

https://github.com/googleapis/google-api-nodejs-client#service -to-service-authentication

Ответы [ 2 ]

1 голос
/ 07 марта 2020

У вас, похоже, много вопросов о том, как это работает. Я настоятельно рекомендую вам ознакомиться с основами аутентификации Google .

JWT - сокращение от JSON Web Token. Это стандартный стандарт, определяющий безопасный способ передачи информации между сторонами в формате JSON. В вашем коде "jwt" - это класс, содержащий свойство keys. Есть тонна библиотек JWT. Есть несколько популярных пакетов, использующих Node / Express frameworks.

__dirname // In Node this is the absolute path of the directory containing the currently executing file.

path.join - это метод, который объединяет различные сегменты пути в один путь.

Здесь вы берете абсолютный путь и объединяете некоторую часть информации до конца пути. Я не уверен, что содержится в jwt.keys.json, но в этом случае это то, что добавляется в конец абсолютного пути.

Без знания структуры вашего проекта или того, на что вы указываете, это на самом деле невозможно сказать, что является и не является допустимым путем в вашем проекте.

keyFile - это ключ в объекте (обозначаемый форматом {key: value}) в google.auth. Как видно из примера кода, на который вы ссылались, скрипт берет библиотеку google.auth и вызывает метод для создания и обработки информации, которую он предоставляет, чтобы абстрагировать от вас другие элементы процесса аутентификации. Вы предоставляете ему две части информации: 1) расположение ключевого файла, предположительно являющегося учетными данными, и 2) объем или набор разрешаемых разрешений. В этом примере это доступ только для чтения к диску.

EDIT: файл закрытого ключа, который вызывающая служба использует для подписания JWT.

0 голосов
/ 10 марта 2020

Я нашел документацию здесь:

https://googleapis.dev/nodejs/google-auth-library/5.10.1/classes/JWT.html

Если вы не хотите включать файл, вы можете использовать key, keyId, и email для отправки учетных данных при запросе авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...