OAuth 2.0隐式授权流程 - clientId和accessToken暴露安全性

时间:2013-07-02 01:17:09

标签: security oauth-2.0 oauth2client

由于OAuth 2.0隐式授权流程暴露了其机制,例如使用JavaScript,在资源所有者的客户端应用程序中,公开客户端ID和访问令牌。我无法找到明确的答案,可以采取哪些措施来防止暴露这种暴露。

有哪些措施可以防止以下情况出现问题?如果很明显我没有正确理解流程,请指出。

方案

客户端A - 已从授权服务器授予其自己唯一客户端ID的合法客户端。

客户端B - 授权服务器不知道的客户端,复制客户端A的客户端ID,吸引无辜的资源所有者并使用其访问令牌来访问其私人信息。

这些是我能想到解决问题的一些选择。

  1. 创建IP白名单并映射到每个已知客户端。授权和调用资源服务器时,请检查授权服务器。
  2. 在资源服务器的端点上设置限制以检测异常活动。

2 个答案:

答案 0 :(得分:2)

嗯,这就是为什么OAuth规范(RFC 6749)警告第10.6节中隐含流的安全漏洞的原因。目前尚不清楚您所描述的反措施在互联网上的一般环境中是否有效。例如,IP标头是不安全的,很容易被欺骗。我只对需要最低安全级别的应用程序使用隐式流程(例如,只读信息显示)。

答案 1 :(得分:0)

在客户端和服务器之间使用SSL保护令牌。因此,内容是加密的,但URI没有加密。您可以将令牌存储在html正文中,因为除浏览器插件外,令牌是安全的。不要使用第三方内容服务器来托管JavaScript,如果它们受到感染,其脚本可以读取您的html。用户可以根据需要看到令牌并将其复制到自己的应用程序中,但是它可以保护自己的资源,因此...最终,由于其简单性,我喜欢隐式流。

最终,服务器处理令牌可能是您无法控制的问题。选择不包含令牌的服务器,这是不安全的。同样,您不应在URL中发回服务器敏感信息。

如果找到可以保证安全性的库,请发布它。