短期访问令牌如何增加安全性?

时间:2016-01-21 18:03:23

标签: oauth-2.0

在问题Why do access tokens expire?的答案中,第一点提供了陈述:

  

[Bearer-Tokens]是短命的,需要刷新,它们限制了攻击者滥用被盗令牌的时间。

但是当使用Access-Token时(来自原生应用),客户端使用刷新令牌来获取新的访问令牌< / strong>,并将新令牌发送回请求者。因此,如果攻击者使用其他人的访问令牌,他每次都会被发送一个全新的访问令牌。

那么谁在乎令牌的持续时间?如果攻击者获得了它,他们已经接管了会话只要刷新令牌持续

我已经知道了十几个问题的答案,但我对每个答案都有疑问。我原来的问题是如此之长,因为我解释了每一个场景以及它们如何无关紧要或错误(据我所知)。所以请尽量帮助我理解,如果我认为答案有警告,我会发表评论。

添加/修改 - 希望通过我的其他信息获得更多答案

  1. 网页使用资源所有者(用户)凭据调用客户端
  2. 客户端调用Auth服务器并获取访问和刷新令牌。访问令牌将在5分钟后到期,刷新令牌将在数小时或数天或任何时间到期。
  3. 客户端将访问令牌发送到网页
  4. 资源所有者(用户)使用网页
  5. 网页将访问令牌发送到客户端
  6. 客户端将访问令牌发送到资源服务器
  7. 资源服务器以多种方式检查访问令牌
  8. 资源服务器将资源发送到客户端
  9. 客户端将资源发送给资源所有者
  10. 资源所有者(用户)继续使用网页
  11. 客户端,在每个请求期间或每4分30秒使用刷新令牌获取新的访问令牌
  12. 客户端,在每个请求期间或每4分30秒,向活动资源所有者
  13. 发送新访问令牌

    是?没有?由于资源所有者主动使用该网站,因此该网站与客户端保持持续通信,并且客户端获得新的访问令牌(使用刷新令牌)并将其发送回网络网站,因此 Active 用户可以继续使用该网站,而不会每5分钟被踢出一次。

    因此,如果任何人获得该访问令牌的支持,并且正在向其发送客户端,则客户端将继续向具有该访问令牌的任何人发送新的访问令牌。当然:在一次刷新之后,这两个人中的一个会有一个糟糕的访问令牌并被启动,但不一定是合适的人。

2 个答案:

答案 0 :(得分:4)

您的观点似乎是,如果攻击者可以接管您的浏览器会话,那么他们将能够访问整个刷新令牌长度的第三方资源,如您所述。那么拥有一个短期访问令牌的重点是什么?

确实有一些道理,但有两种一般的回应:

  • 如果第三方发现会话已被攻击者接管,则使用刷新令牌使使用户无效
  • 变得切实可行。
  • 访问令牌/刷新令牌系统用于防止或限制您尚未提及的其他类型的攻击。<​​/ li>

关于第一点,请记住访问令牌被发送到资源服务器,而不是授权服务器。虽然规范中没有任何内容阻止资源服务器检查用户的有效性,但实际上会出现性能问题并且会模糊资源服务器和授权服务器之间的区别。相反,访问令牌通常设计为自我验证,而无需访问某些外部资源。

鉴于此,使用户无效的唯一方法是在发送刷新令牌时在授权服务器上执行此操作。授权服务器发现此用户已被标记为已泄露,并拒绝发送新的访问令牌

关于第二点,还有很多其他安全方案,OAuth旨在防止攻击者接管用户的浏览器会话。如果有人能够以其他方式获得访问令牌,该怎么办?由于访问令牌本身通常不用于访问客户端(见下文),因此他们无法让客户端为其刷新令牌,并且因此,访问令牌是短暂的这一事实将是一个安全优势。

作为参考,这两点在this email中简明扼要地提交给Oauth工作组邮件列表。

特别关注您在帖子中描述的流程,我认为您的困惑源于客户端(Web服务器)向用户代理(浏览器)发送访问令牌(您的步骤3)的想法,以及token(以cookie的形式)是客户端用于验证用户代理的内容。虽然Web框架可以执行这些操作,但是根据我的经验,这两者都不是OAuth的一部分(对于Web框架而言也是如此)。

答案 1 :(得分:0)

访问令牌是短暂的,刷新令牌是长寿的。访问令牌将呈现给托管受保护内容的资源服务器(仅限资源服务器)以进行访问。刷新令牌仅提供给授权服务器,从不提供给资源服务器。因此,当攻击者获得访问令牌时,他可以在访问令牌的生命周期内使用它来访问受保护的内容。

当访问令牌到期时,除非他也获得了刷新令牌,否则无法获得新的令牌。除此之外,当使用刷新令牌时,客户端通常会向授权服务器验证自身,因此即使攻击者获得刷新令牌,他也需要客户端的凭据才能使用它来获取新的访问令牌。 / p>