После аутентификации на сервере авторизации OAuth2, который поддерживает OpenID с использованием response_type=code
с scope=openid email
, конечная точка вызывающего токена должна вернуть id_token
.
Что мне не хватает, так это то, должно ли id_token
содержать email
или нет - и клиент должен в этом случае вызвать userInfo
конечную точку.
В спецификации сказано:
http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
Претензии, запрошенные профилемзначения электронной почты, адреса и области телефона возвращаются из конечной точки UserInfo, как описано в разделе 5.3.2, когда используется значение response_type, которое приводит к выдаче токена доступа.Однако, когда токен доступа не выдается (как в случае значения response_type id_token), полученные утверждения возвращаются в токене ID.
Насколько я понимаю, это означает, что id_token
делаетне нужно содержать email
, если access_token
доступен, так как userInfo
должен быть вызван, чтобы получить его.Однако, глядя на реализацию клиента oidc в https://github.com/bitly/oauth2_proxy, кажется, что он требует email
утверждения, чтобы быть доступным внутри id_token
без вызова userInfo
конечной точки.
Что такое правильное поведение вOpenID-совместимый сервер авторизации?