0

Предположим, что я вызываю следующий запрос HTTP:OpenID Connect Упорство ID токен к стороне сервера обратного вызова функции

https://accounts.example.com/oauth2/auth? 
scope=openid+email& 
nonce=53f2495d7b435ac571& 
redirect_uri=https%3A%2F%2Foauth2demo.appspot.com%2Foauthcallback& 
response_type=id_token+token& 
client_id=753560681145-2ik2j3snsvbs80ijdi8.apps.googleusercontent.com 

, который дает ответ следующие перенаправлять:

https://oauth2demo.appspot.com/oauthcallback# 
access_token=ya29.AHES6ZSzX 
token_type=Bearer& 
expires_in=3600& 
id_token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiY... 

Что такое точка callback, учитывая, что возвращаемые метаданные, содержащие id_token и т. д., позиционируются после хэш-фрагмента в URI и поэтому не сохраняются в качестве параметров функции обратного вызова? Как обратный вызов на стороне сервера получает различные токены?

ответ

1

Тип ответа, который используется здесь, - это так называемый «неявный» тип ответа, который в первую очередь предназначен для клиентов в браузере (например, Javascript), и в этом случае код Javascript, который подается на URL обратного вызова, может получить доступ параметры в фрагменте. Веб-приложения должны сделать что-либо один из:

  1. прилипает к code потока, который предназначен для клиентов веб-приложений
  2. использовать режим ответа Форма сообщения (http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html), если поддерживаемое OP
  3. служить Javascript на обратного вызова URL, который разбирает из параметров из фрагмента и помещает их на сервер

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

+0

Спасибо. Отсюда я предполагаю, что следующий шаг в определении требований пользователя - это запросить токен доступа и использовать его для вызова конечной точки пользовательской информации? –

+0

Если претензий, представленных в id_token, недостаточно для вашей цели, тогда да –

+0

В потоке предоставления авторизационного кода не возвращается идентификатор идентификатора, и я не могу его настроить. Установка параметров id_token или id_token token response_type, как представляется, вызывает неявный поток грантов. Идентификатор ID не будет сохраняться на сервере. Я предполагаю, что мой единственный вариант - вызвать конечную точку пользовательской информации. –