在回答为什么访问令牌会过期?,提供的第一点指出:
[Bearer-Tokens] 是短暂的并且需要刷新,它们限制了攻击者滥用被盗令牌的时间。
但是当使用访问令牌时(来自本机应用程序),客户端使用刷新令牌来获取新的访问令牌,并将该新令牌发送回请求者。因此,如果攻击者使用其他人的访问令牌,他每次只会收到一个全新的访问令牌。
那么谁在乎令牌的持续时间呢?如果攻击者得到它,只要刷新令牌持续,他们就已经接管了会话
我已经知道我的问题的十几个答案,但我对每个答案都有疑问。我最初的问题很长,因为我解释了每个场景以及它们如何无关紧要或错误(据我所知)。所以请尽量帮助我理解,如果我认为答案有警告,我会发表评论。
添加/编辑 - 希望通过我的附加信息获得更多答案
是的?不?由于 Resource Owner 正在Actively使用该网站,该网站与 Client 保持不断的通信,并且 Client 获得一个新的 Access Token(使用刷新令牌)并将其发送回网站,因此Active用户可以继续使用该网站,而不会每 5 分钟被踢出一次。
因此,如果任何人获得该访问令牌,并用它攻击客户端,客户端将继续向拥有该访问令牌的任何人发送新的访问令牌。授予:单次刷新后,这两个人中的一个将拥有错误的访问令牌并被启动,但不一定是正确的人。
您的观点似乎是,如果攻击者可以接管您的浏览器会话,那么他们将能够在刷新令牌的整个长度内访问第三方资源,如您所述。那么拥有一个短期访问令牌有什么意义呢?
这当然有一定的道理,但有两种普遍的反应:
关于第一点,请记住访问令牌发送到资源服务器,而不是授权服务器。尽管规范中没有任何内容阻止资源服务器检查用户的有效性,但在实践中可能会出现性能问题。访问令牌通常设计为自我验证,无需访问某些外部资源。
鉴于此,使用户无效的唯一方法是在发送刷新令牌时在授权服务器上执行此操作。授权服务器看到此用户已被标记为已泄露,并拒绝发送新的访问令牌。
关于第二点,OAuth 旨在防止用户的浏览器会话被攻击者接管之外的许多其他安全场景。如果有人能够以其他方式获得访问令牌怎么办?由于访问令牌本身通常不用于访问客户端(见下文),他们将无法让客户端为他们刷新令牌,因此访问令牌是短暂的将是一个安全优势。
作为参考,这两点都在这封发送给 Oauth 工作组邮件列表的电子邮件中进行了简要说明。
具体查看您在帖子中描述的流程,我认为您的困惑源于客户端(Web 服务器)向用户代理(浏览器)发送访问令牌(您的第 3 步)和该令牌(在cookie 的形式)是客户端用来验证用户代理的。尽管 Web 框架可以执行这些操作,但它们都不是 OAuth 的一部分(根据我的经验,Web 框架通常也不是)。
访问令牌是短暂的,刷新令牌是长期的。访问令牌被提供给托管受保护内容的资源服务器(并且仅资源服务器)以获取访问权限。刷新令牌仅提供给授权服务器,而不会提供给资源服务器。因此,当攻击者获得访问令牌时,他可以在访问令牌的生命周期内使用它来访问受保护的内容。
当访问令牌过期时,除非他也获得了刷新令牌,否则无法获得新的访问令牌。除此之外,当使用刷新令牌时,客户端通常会向授权服务器验证自身身份,因此即使攻击者获得了刷新令牌,他也需要客户端的凭据才能使用它来获取新的访问令牌。
| 归档时间: |
|
| 查看次数: |
5580 次 |
| 最近记录: |