OAuth 2 中隐式授权类型的目的是什么?
我不知道我是否只是有某种盲点或什么,但我已经多次阅读 OAuth 2
规范并仔细阅读邮件列表档案,我还没有找到一个很好的解释来解释为什么隐式授权已经开发了获取访问令牌的流程。与授权码授予相比,它似乎只是无缘无故地放弃了客户端身份验证。这是如何“针对使用脚本语言在浏览器中实现的客户端进行优化”(引用规范)?
两个流程开始时相同(来源:https ://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-22 ):
- 客户端通过将资源所有者的用户代理定向到授权端点来启动流程。
- 授权服务器验证资源所有者(通过用户代理)并确定资源所有者是允许还是拒绝客户端的访问请求。
-
假设资源所有者授予访问权限,授权服务器使用之前提供的重定向 URI(在请求中或在客户端注册期间)将用户代理重定向回客户端。
-
重定向 URI 包含授权码(授权码流)
- 重定向 URI 在 URI 片段中包含访问令牌(隐式流)
这是流量分裂的地方。在这两种情况下,此时的重定向 URI 都指向客户端托管的某个端点:
- 在授权代码流中,当用户代理使用 URI 中的授权代码访问该端点时,该端点上的代码将授权代码与其客户端凭据一起交换为访问令牌,然后它可以根据需要使用该令牌。例如,它可以将其写入网页上的脚本可以访问的网页。
- 隐式流程完全跳过了这个客户端身份验证步骤,只是加载了一个带有客户端脚本的网页。URL 片段有一个可爱的技巧,可以防止访问令牌被过多地传递,但最终结果基本相同:客户端托管的站点提供一个页面,其中包含一些可以获取访问令牌的脚本.
因此我的问题是:跳过客户端身份验证步骤在这里获得了什么?