oauth-2.0 - 在没有 OIDC 的情况下如何在 OAuth2 中进行身份验证?
问题描述
我知道有很多关于这一点的材料,但我还是不太明白。
我知道 OAuth2 不适用于身份验证,并且您需要 OIDC 进行身份验证。
但还是不太明白为什么。
如果我查看隐式流程,其中一个步骤是用户向授权服务器进行身份验证,然后颁发访问令牌。
这是身份验证,不是吗?
那么为什么我们还需要 OIDC 和 ID 令牌呢?是不是因为访问令牌本身还不够,而 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 拥有的受保护资源,你可以请 John 授权此访问。” 然后,授权服务器可以执行此操作并返回客户端的访问令牌以访问受保护的资源。
但是,如果客户问:“我怎么知道实际上是 John 提供了授权?” OAuth 2.0 框架没有给出回答这个问题的方法。
除了访问令牌之外,OpenID Connect 还提供额外的 ID 令牌,客户端可以检查它是否是 John。
推荐阅读
- sql - 求和和转换不起作用
- python - microsoft sql server basic 高级 python 集成差异
- codeigniter-3 - 在 codeigniter 中编辑选定的下拉值
- css - 在图像顶部放置重力形式,旁边有文字
- kendo-ui - Kendo Grid 服务器端分组不适用于 OData
- ruby - rbenv - 帮助理解 .ruby-version 语法 "xxx" 与 "ruby-xxx@project-name"
- swift - 只有在可以调用另一个方法的情况下,如何使一个方法出现在“重载集”中?
- sorting - 有没有办法使用 Google 脚本来更改 Gmail 贪睡标签?
- javascript - createObjectURL(blob) 尽管用新数据覆盖文档,但仍保存静态数据
- ionic-framework - Ionic + Leaflet 如何在重绘之前清除现有图层?