首页 > 解决方案 > 在没有 OIDC 的情况下如何在 OAuth2 中进行身份验证?

问题描述

我知道有很多关于这一点的材料,但我还是不太明白。

我知道 OAuth2 不适用于身份验证,并且您需要 OIDC 进行身份验证。

但还是不太明白为什么。

如果我查看隐式流程,其中一个步骤是用户向授权服务器进行身份验证,然后颁发访问令牌。

这是身份验证,不是吗?

那么为什么我们还需要 OIDC 和 ID 令牌呢?是不是因为访问令牌本身还不够,而 JWT 确保用户稍后可以通过后端服务进行身份验证?

如果您只有 OAuth2 而没有 OIDC,您将如何进行身份验证?

标签: oauth-2.0openid-connect

解决方案


披露:我为 Ping Identity 工作。

我写了一篇关于为什么 OpenID Connect 在 OAuth 2.0 之上有用的博客,我认为它会在这里有所帮助。

https://developer.pingidentity.com/en/blog/posts/2019/oidc-adds-authentication.html

基本上,OAuth 2.0 框架为客户端提供了一种方法来请求授权服务器去获取资源所有者的授权。

即,客户端对授权服务器说,“我需要访问 John 拥有的受保护资源,你可以请 John 授权此访问。” 然后,授权服务器可以执行此操作并返回客户端的访问令牌以访问受保护的资源。

但是,如果客户问:“我怎么知道实际上是 John 提供了授权?” OAuth 2.0 框架没有给出回答这个问题的方法。

除了访问令牌之外,OpenID Connect 还提供额外的 ID 令牌,客户端可以检查它是否是 John。


推荐阅读