我知道有很多关于这一点的 Material ,但我仍然不太明白。
我知道 OAuth2 不用于身份验证,并且您需要在顶部使用 OIDC 才能进行身份验证。
但还是不太明白为什么。
如果我看一个隐式流程,其中一个步骤是用户认证 到授权服务器,然后颁发访问 token 。
这是认证,不是吗?
那么为什么我们仍然需要 OIDC 和 ID token ?是不是因为访问 token 本身是不够的,而 JWT 确保用户稍后可以通过后端服务进行身份验证?
如果您只有 OAuth2 而没有 OIDC,您将如何进行身份验证?
最佳答案
披露:我为 Ping Identity 工作。
我写了一篇关于为什么 OpenID Connect 在 OAuth 2.0 之上很有用的博客,我认为它会在这里有所帮助。
https://developer.pingidentity.com/en/blog/posts/2019/oidc-adds-authentication.html
基本上,OAuth 2.0 框架为客户端提供了一种方法来请求授权服务器去并从资源所有者那里获得授权。
即,客户端对授权服务器说,“我需要访问 John 拥有的 protected 资源,您可以请 John 授权此访问。”授权服务器然后可以做它的事情并返回给客户端的访问 token 以访问 protected 资源。
但是,如果客户问:“我怎么知道实际上是约翰提供了授权?” OAuth 2.0 框架没有给出回答这个问题的方法。
除了访问 token 之外,OpenID Connect 还提供额外的 ID token ,客户端可以检查它是否是 John。
关于oauth-2.0 - 如果没有 OIDC,如何在 OAuth2 中进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872937/