Как определить метод аутентификации при локальном использовании клиентских библиотек 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:
1 ответ
Существует 4 различных способа аутентификации запроса без создания объекта учетных данных.
- Если для переменной среды GOOGLE_APPLICATION_CREDENTIALS задан путь к файлу закрытого ключа JSON действительной учетной записи службы, то он используется.
- Если SDK Google Cloud установлен и для него установлены учетные данные по умолчанию, то он используется. Обратите внимание, что если вы сделали этот шаг один раз в прошлом, он останется в силе. (Я предполагаю, что это то, что вы сейчас используете для аутентификации.)
- Если приложение выполняется в стандартной среде App Engine, то используются учетные данные и идентификатор проекта из службы идентификации приложений. (Не применимо здесь, но я приведу это для полноты картины.)
- Если приложение работает в 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=
Это не совсем отвечает на ваш вопрос, но в процессе устранения он должен быть правильным...