OAuth2在授权代码授权上的隐式授权的优势是什么?

时间:2012-02-21 12:54:20

标签: oauth oauth-2.0

隐含授权超过授权代码授权的OAuth2有什么优势?

具体而言,我想知道为什么建议公共客户使用隐式授权,但授权代码授权不是。它们看起来非常相似,差别并不重要。

2 个答案:

答案 0 :(得分:12)

授权代码步骤的好处如下(来自OAuth 2.0 spec 1.3.1):

  

授权码提供了一些重要的安全性好处   作为验证客户端和传输的能力   直接访问令牌到客户端而不通过它   资源所有者的用户代理,可能会将其暴露给他人,   包括资源所有者。

通常,如果您的客户端是服务器端(Web应用程序),则应使用授权代码授予。如果它是基于JavaScript的应用程序(客户端) - 隐式是合适的。对于移动应用程序,如果使用外部浏览器(未嵌入),则通常首选授权代码授予类型。

客户端机密仅适用于服务器端应用程序,因为客户端需要将秘密嵌入到软件中 - thus only secret for so long(可以进行逆向工程)。

答案 1 :(得分:1)

在两种情况下比较客户端操作,记住客户端 - 是您必须自己编写的软件。

如果Authorization code grant客户端执行了规范中定义的步骤:

  
      
  1. 客户端从授权服务器的令牌请求访问令牌   端点,包括上一步中收到的授权码。什么时候   在发出请求时,客户端使用授权服务器进行身份验证。该   客户端包括用于获取授权代码的重定向URI   验证
  2.   
  3. 授权服务器验证客户端,验证授权码,   并确保收到的重定向URI与用于重定向的URI匹配   客户在步骤(C)中。如果有效,授权服务器将以访问权限进行响应   令牌和可选的刷新令牌。
  4.   

如果Implicit Grant必须这样做:

  
      
  1. 接收访问令牌。
  2.   

现在答案或多或少都是微不足道的:第一种方法中的代码量是未知的,但对于第二种方法而言几乎可以忽略不计。