在过去的几天里,我一直在阅读有关 OAuth2 和 OpenIDConnect 的所有规范,并使用 Thinktecture Identity Server 实现了一个测试客户端。我还学习了几门复数类(class),我认为了解它的主要要点。但是,我仍然对响应类型感到非常困惑。
OpenIDConnect 规范指定混合流响应类型是“code”、“id_token”和“token”的组合。我了解“id_token”允许我们最初访问基本的 id 信息。
我也理解代码”是指授权代码,“ token ”是指访问 token ,将“代码”与其他两个中的一个或两个组合触发流程,但我的理解是您将授权代码交换为访问 token 授权流程,而隐式流程隐式提供访问代码?
有人能解决我的困惑吗?
最佳答案
您所做的以下陈述是正确的:
code
指授权码token
指访问 token 或 ( access_token
) code
对于 access_token
但是您的部分困惑可能源于术语混淆:
正如@juanifioren 指出的,混合流结合了以下几点:
code id_token
flow 会得到一个 code
和 id_token
直接在身份验证响应中,但您将使用 code
获得 access_token
来自 token 端点 code token
flow 会得到一个 code
和 access_token
直接在身份验证响应中,但您将使用 code
获得 id_token
可能还有另一个 access_token
在来自 token 端点的后端 code id_token token
flow 会得到一个 code
, access_token
和一个 id_token
直接在身份验证响应中 和 您可以使用 code
在后端获取 另一个 access_token
来自 token 端点 获取
access_token
从 token 端点获取它不同于从授权端点获取它,因为 secret 客户端向 token 端点(而不是授权端点)验证自己。因此 access_token
对于客户端的 secret 部分,可能有更多的权限和或更长的生命周期。另请参阅规范邮件列表上有关此主题的简短主题:http://lists.openid.net/pipermail/openid-specs-ab/Week-of-Mon-20150209/005229.html
关于asp.net - OpenIDConnect 响应类型混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29275477/