При использовании системы проверки подлинности Google OpenIDConnect можно указать email
или profile
или оба параметра scope
. Если вы запрашиваете область email
, заявки "email" и "email_verified" будут включены в id_token
, который будет возвращен как часть успешного сеанса аутентификации OAuth2.
Вот пример из документации Google:
Полезная нагрузка идентификатора ID
Маркер ID - это объект JSON, содержащий набор пар имя/значение. Вот пример, отформатированный для удобочитаемости:
{"iss":"accounts.google.com",
"at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q",
"email_verified":"true",
"sub":"10769150350006150715113082367",
"azp":"1234987819200.apps.googleusercontent.com",
"email":"[email protected]",
"aud":"1234987819200.apps.googleusercontent.com",
"iat":1353601026,
"exp":1353604926,
"hd":"example.com"
}
Однако запрос области profile
, по-видимому, не влияет на содержимое id_token. Чтобы получить информацию о профиле, вы должны сделать отдельный HTTP-запрос для отдельной конечной точки (аутентифицированный с помощью access_token, который вы только что получили), чтобы получить документ, который выглядит очень похожим, но с дополнительной информацией:
{
"kind": "plus#personOpenIdConnect",
"gender": string,
"sub": string,
"name": string,
"given_name": string,
"family_name": string,
"profile": string,
"picture": string,
"email": string,
"email_verified": "true",
"locale": string,
"hd": string
}
В идеале я бы предпочел получить информацию о профиле (просто name
, фактически), включенную в id_token JWT, вместо того, чтобы делать отдельный вызов. Есть ли способ указать дополнительные поля и включить их в качестве претензий в id_token? Если нет, то почему email
обрабатывается специально и возвращается в id_token?