Облачные конечные точки - возможна ли реализация JWT? - PullRequest
0 голосов
/ 28 мая 2019

Я работаю над сайтом, и существует аутентификация с использованием облачного хранилища данных Google. Кажется, я не могу найти никакой документации, показывающей, как я могу сгенерировать веб-токен JSON, совместимый с конечными точками облака, для конечных пользователей.

Будем благодарны за любые ссылки, которые вы можете удалить.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Я работаю над веб-сайтом, и существует аутентификация с использованием облачного хранилища данных Google.

Если ваша текущая система аутентификации генерирует ваши собственные токены OAuth, вы не можете использовать эти токены сКонечные точки Google Cloud.Вы должны генерировать свои токены с помощью механизмов Google (учетных записей Google).В противном случае службы Google не смогут проверить ваши токены.Проверьте, создает ли ваш бэкенд токены или использует Google OAuth для создания токенов.Однако существует три типа токенов: токен доступа, токен обновления и токен идентификатора клиента.Возможно, вам необходимо изменить серверную часть для создания токенов идентификатора клиента (OIDC).Некоторые системы просто генерируют первые два.

Ниже предполагается, что Google выпустил токены OAuth.

Да, это возможно и очень просто.Я покажу вам пример.

Примечание: я написал статью о том, как генерировать токены OAuth 2.0 с CURL, включая токен Client ID. Google OAuth 2.0 - тестирование с помощью Curl - обновление токена доступа В моей статье показаны шаги для написания кода на любом языке.

Используя CLI, сгенерируйте идентификатор клиента OAuth 2.0:

gcloud config config-helper --format "value(credential.id_token)" --force-auth-refresh

Сохранить сгенерированный токен.Для этого примера назовите его TOKEN.

URL - это URL-адрес конечной точки.

Теперь сделайте запрос к конечной точке:

curl -H "Authorization: Bearer TOKEN" URL

Если вам интересно узнать, чтовнутри TOKEN JWT:

curl https://oauth2.googleapis.com/tokeninfo?id_token=TOKEN

Возвращенный JSON будет выглядеть следующим образом:

{
  "aud": "https://cloudtask-abcdefabcdef-uc.a.run.app",
  "azp": "0123456789077420983142",
  "email": "cloudtask@development.iam.gserviceaccount.com",
  "email_verified": "true",
  "exp": "1559029789",
  "iat": "1559026189",
  "iss": "https://accounts.google.com",
  "sub": "012345678901234567892",
  "alg": "RS256",
  "kid": "0123456789012345678901234567890123456789c3",
  "typ": "JWT"
}

Я не могу найти какую-либо документациюпоказывающий, как я могу сгенерировать веб-токен JSON, совместимый с конечными точками облака, для конечных пользователей.

Вот ссылка с подробной информацией об аутентификации конечных точек облака Google:

Google IDаутентификация токена

Вы можете удивиться, почему вы не можете использовать свои собственные токены.Причина в том, что Google не может проверить подпись на токене.

Токены OAuth (Signed-JWT) подписаны с использованием закрытого ключа.Они проверены с использованием открытого ключа.Google публикует открытые ключи на https://www.googleapis.com/oauth2/v1/certs

Это позволяет Google и другим лицам проверять данные, подписанные Google.Когда вы генерируете токен, Google не может получить доступ к вашему публичному ключу для проверки подписи.Поэтому вы должны использовать сгенерированные Google токены, чтобы Google мог их проверять.

0 голосов
/ 29 мая 2019

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

...