Как определить метод аутентификации при локальном использовании клиентских библиотек Google Cloud Platform

В настоящее время я могу запустить локальный скрипт на Python, который вызывает API Google vision с помощью клиентской библиотеки Python (в частности, я использую google-cloud-vision пакет). Тем не менее, мне любопытно, как это аутентифицируется. В скрипте python, который я запускаю локально, я не предоставляю никакой аутентификационной информации. Из прочтения приведенных ниже публикаций кажется, что обычный способ аутентификации при локальном запуске - установить переменную среды в путь к файлу ключа.JSON (т.е. export GOOGLE_APPLICATION_CREDENTIALS = path/to/JSON/key/file), однако, я не помню, чтобы делать это, и если я бегу printenv У меня нет переменной среды с именем GOOGLE_APPLICATION_CREDENTIALS.

В приведенных ниже публикациях содержатся подробные сведения о различных способах аутентификации с использованием клиентских библиотек локально, но как я могу точно определить, как моя программа проходит аутентификацию? Есть ли способ запросить это?

"Аутентификация в Cloud Vision API"... включая часть "Учетные данные приложения по умолчанию" на странице выше

Раздел "Аутентификация приложений с помощью клиентской библиотеки" в разделе "Создание и включение учетных записей служб для экземпляров"

Раздел "Предоставление учетных данных для вашего приложения" на странице "Настройка аутентификации для производственных возможностей сервера на сервере"

Раздел "Настройка переменной среды " страницы "Начало работы с аутентификацией":

Страница "Приступая к работе" клиентских библиотек Python:

"Аутентификация в облачной службе API"

1 ответ

Существует 4 различных способа аутентификации запроса без создания объекта учетных данных.

  1. Если для переменной среды GOOGLE_APPLICATION_CREDENTIALS задан путь к файлу закрытого ключа JSON действительной учетной записи службы, то он используется.
  2. Если SDK Google Cloud установлен и для него установлены учетные данные по умолчанию, то он используется. Обратите внимание, что если вы сделали этот шаг один раз в прошлом, он останется в силе. (Я предполагаю, что это то, что вы сейчас используете для аутентификации.)
  3. Если приложение выполняется в стандартной среде App Engine, то используются учетные данные и идентификатор проекта из службы идентификации приложений. (Не применимо здесь, но я приведу это для полноты картины.)
  4. Если приложение работает в Compute Engine или в гибкой среде App Engine, учетные данные и идентификатор проекта получаются из службы метаданных. (Неприменимо здесь, но я приведу это также для полноты картины.)

Если никакие учетные данные не найдены с использованием вышеуказанных методов, будет вызвано DefaultCredentialsError. Так как вы не получаете эту ошибку, и у вас не установлена ​​переменная окружения из #1, а опции #3 и #4 не применимы, единственная оставшаяся опция - это № 2.

Приведенную выше информацию можно найти на странице readthedocs.io для страницы аутентификации google-cloud, а более конкретно на странице пакета google.auth.

Вы можете проверить, настроены ли у вас учетные данные по умолчанию, выполнив эту команду:

gcloud auth application-default print-access-token 

Если это не возвращает ошибку, а токен доступа, это означает, что #2 настроен. Не передавайте этот токен никому, конечно...

Некоторая связанная информация, вы можете проверить токен, который был распечатан с помощью команды выше здесь, или с помощью команды curl ниже (вставьте токен в конце):

curl -i https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

Это не совсем отвечает на ваш вопрос, но в процессе устранения он должен быть правильным...

Другие вопросы по тегам