【问题标题】:Access Token from OIDC vs OAuth2.0来自 OIDC 与 OAuth2.0 的访问令牌
【发布时间】:2021-03-17 11:16:56
【问题描述】:
-
我知道从OAuth2.0获取的访问令牌可以用来访问受保护的资源。
-
OpenID Connect 在身份验证后颁发 ID 令牌和访问令牌。并且规范说访问令牌可用于访问 userinfo 端点以获取其他用户信息。
我无法理解的一件事是,在 #1 和 #2 中获得的访问令牌之间是否有任何区别。如果没有区别,如果我们实现 OIDC,我们是否需要 OAuth2.0。
【问题讨论】:
标签:
oauth-2.0
openid-connect
access-token
【解决方案1】:
您倾向于通过插入 Open Id Connect 安全库将 OIDC 和 OAuth 2.0 作为组合流程一起实施。
例如,对于移动应用程序,插入AppAuth Libraries 是很常见的,这会给你这种行为:
- 使用 response_type=code 的 OAuth 2.0 授权重定向
- Open Id Connect 部分通过包含 scope=openid 来启动
- 然后您会获得一个授权码 (OAuth 2.0)
- 然后您将授权码换成令牌
- 您将获得一个访问令牌(OAuth 2.0 部分)
- 您还会获得一个 id 令牌(OIDC 部分)
实际上,OIDC 引入了一些标准化,使开发 UI 流程和处理 API 中的访问令牌更容易,例如:
- 元数据端点,告诉我们所有其他端点的位置
- JWKS 端点,我们可以从中获取访问令牌的公钥
通常在我自己的代码中,我根本不使用 id 令牌。但是,最好接收一个,以便 AppAuth 等库可以对收到的令牌进行额外的验证检查。
如果有帮助,我的Message Workflow Blog Post 总结了一些消息和端点的使用。