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