【问题标题】:In OpenID Connect's hybrid flow, what is the purpose of the 'code' parameter if you can request an access_token?在 OpenID Connect 混合流中,如果您可以请求 access_token,“code”参数的用途是什么?
【发布时间】:2018-04-18 20:38:36
【问题描述】:
根据我对 OpenID Connect 和 OAuth 2 中的授权代码流的了解,从授权端点返回给依赖方的代码参数应该在随后的 access_token 请求中进行交换。但是,在混合流中,您可以请求从授权端点返回的代码、access_token 和 id_token。那么,如果您已经拥有 access_token,为什么还需要 code 参数呢?
【问题讨论】:
标签:
openid-connect
identityserver4
【解决方案1】:
我至少可以想到两个原因,都与客户端能够对令牌端点进行身份验证有关,但与授权端点无关:
- 您通常只能从令牌端点接收 refresh_token,而不能从授权端点接收。因此,如果您需要,那么您可以先交换代码。
- 提供者可以选择(或配置)在从授权端点返回的 ID 令牌中返回更少或最小的声明集,以及从令牌端点或通过 UserInfo 端点返回的 ID 令牌中的更多信息。我认为不建议直接从授权端点发送敏感声明。