2

由于 OAuth 2.0 隐式授权流程公开了其机制,例如使用 JavaScript,因此在客户端应用程序中向资源所有者公开了客户端 ID 和访问令牌。我还没有找到一个明确的答案,可以做些什么来防止利用曝光。

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

设想

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

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

这些是我能想到的一些解决问题的方法。

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

2 回答 2

2

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

于 2013-12-14T02:52:37.603 回答
0

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

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

如果您找到保证安全的库,请发布。

于 2020-09-03T17:46:05.483 回答