Обменять токен доступа GCP на токен идентификатора

Я использую хранилище и механизм gcp для получения токенов доступа для учетной записи службы (набор ролей на основе токенов). Я пытаюсь использовать полученный токен для вызова облачной функции (с аутентификацией). Однако после неудачи я теперь понимаю, что мне нужен id_token в заголовке авторизации запроса, однако токен, предоставленный мне из хранилища, является токеном «доступа».

Есть ли способ использовать токен доступа для GCP для создания id_token для использования с облачными функциями?

@ Шейн У тебя было время проверить мой ответ? Это помогло вам решить вашу проблему? Если да, не могли бы вы взглянуть на этот документ и соответственно продолжить.

Sai Chandini Routhu 02.09.2024 15:41
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Да, решение есть, и оно называется API учетных данных службы. Благодаря этому вы можете сгенерировать идентификационный токен. А поскольку это API Google Cloud, для его вызова необходимо использовать токен доступа.

Я также пишу статью об этом API

Большое спасибо за это. После того, как вы предоставили SA доступа access_token, разрешение Service-Account-Token-Creater для SA, для которого вам нужен id_token, все работает хорошо.

Shane 03.09.2024 01:51

Не существует прямого способа использовать токен доступа для GCP для создания id_token для использования с облачными функциями.

Но вы можете использовать токен доступа для GCP для создания id_token с помощью облачных функций. Вы можете использовать OAuth 2.0 для обмена токена доступа GCP на токен ID.

Вы получите токен доступа из Хранилища, связанный с учетной записью службы. Токен доступа используется для авторизации доступа к API Google. Если вы используете его в среде Python, вы можете использовать библиотеку аутентификации Google.

Если вы работаете в другой среде, вы можете использовать любой HTTP-клиент для выполнения запросов к токенам OAuth. После этого вы можете использовать токен доступа для получения токена идентификатора.

Получив токен идентификатора, вы можете отправить HTTP-запрос к своей облачной функции с заголовком авторизации, установленным на предъявителя.

Другой способ использовать токен доступа для запроса токена идентификатора с помощью API учетных данных учетной записи службы IAM:

Как вы сказали, вы получите токен доступа из хранилища, связанного с учетной записью службы GCP. Токен доступа используется для авторизации доступа к API Google.

С помощью токена доступа теперь вы можете сделать запрос к Google IAM API, чтобы получить токен идентификатора. Используйте API учетных данных службы IAM для создания токена идентификатора, сделав авторизованный запрос с использованием токена доступа.

Также воспользуйтесь этим методом аутентификации в Хранилище Google Cloud, который может помочь решить вашу проблему.

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