Получить токен аутентификации учетной записи службы без gcloud?

можно ли получить токен носителя авторизации для учетной записи Google Cloud service без использования gcloud?

то есть я хотел бы сделать HTTP-запрос (предположительно, подписанный каким-то образом моим файлом ключа JSON), который предоставил бы мне эквивалент

gcloud auth application-default print-access-token

этот запрос будет сделан на моем собственном сервере, где я, возможно, не захочу устанавливать gcloud и где у меня нет доступа к каким-либо внутренним метаданным сервера, которые могли бы предоставить это (например, как случай с вычислительным двигателем).

есть ли какая-то конечная точка oauth, которая предоставляет что-то вроде этого?

альтернативно, есть ли способ генерировать долгоживущие токены с gcloud?

Я новичок в облачной экосистеме Google, поэтому извините мое невежество и терминологию...

2 ответов


Я думаю, что это именно то, что вы ищете:

https://developers.google.com/identity/protocols/OAuth2#serviceaccount

честно говоря, я не думаю, что то, чего вы пытались достичь, было правильным, бегом

gcloud auth application-default print-access-token

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

" эта команда полезна при разработке кода, который обычно использует учетную запись службы, но должен код в локальной среде разработки, где проще предоставить учетные данные пользователя."

Это должно помочь вам немного больше в реализации этого решения: https://developers.google.com/identity/protocols/OAuth2ServiceAccount


для вашего второго вопроса: "есть ли способ генерировать долгоживущие токены с помощью gcloud?"нет нет. Однако для создания новых маркеров доступа можно использовать токен обновления. Проверьте первый ответ на этот вопрос:

OAuth2 и Google API: время истечения срока действия маркера доступа?

а также Вот пример библиотеки python, которую вы можете использовать в качестве аутентификации механизм:

https://github.com/GoogleCloudPlatform/google-auth-library-python/blob/master/google/oauth2/credentials.py