【发布时间】:2018-11-17 07:52:01
【问题描述】:
使用response_type=code 和scope=openid email 对支持OpenID 的OAuth2 授权服务器进行身份验证后,调用令牌端点应返回id_token。
我缺少的是这个id_token 是否应该包含email - 在这种情况下客户端应该调用userInfo 端点。
规范说:
http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
配置文件、电子邮件、地址和电话范围值请求的声明从 UserInfo 端点返回,如第 5.3.2 节所述,当使用导致访问令牌被发布的 response_type 值时。但是,当没有颁发 Access Token 时(response_type 值 id_token 就是这种情况),生成的 Claims 会在 ID Token 中返回。
据我了解,这意味着如果access_token 可用,则id_token 不需要包含email,因为应该调用userInfo 来获取它。然而,看看https://github.com/bitly/oauth2_proxy 中oidc 客户端的实现,似乎他们确实需要email 声明在id_token 中可用,而无需调用userInfo 端点。
OpenID 兼容授权服务器中的正确行为是什么?
【问题讨论】:
-
我猜配置文件范围(声明)将定义要包含在 id_token 中的内容,资源范围(给定声明映射)定义要包含在 access_token 中的内容
标签: email oauth-2.0 openid claims userinfo