【发布时间】:2018-07-08 13:28:39
【问题描述】:
在将 JWT 用于自然不安全的客户端(浏览器、手机等)时,我很难理解刷新令牌的使用。
对我来说,认为如果 JWT 被泄露,刷新令牌也没有被泄露,这似乎很天真。
只要刷新令牌仍然有效,攻击者就拥有无限 JWT 的来源。即使您使使用的刷新令牌无效,如果攻击者实施稍微更激进的刷新策略,他们仍然占据上风。这与受损的长期 JWT 有何不同?
当使用长期存在的 JWT 时,攻击者只有在能够持续利用最初为他们提供 JWT 的任何漏洞的情况下才能继续获得有效的 JWT。使用刷新令牌,他们可以通过漏洞获得 JWT 一次,然后获得新的 JWT,而不受惩罚,但他们喜欢。这似乎与长期存在的 JWT 一样安全,甚至可能更不安全。
我错过了什么?
【问题讨论】:
-
如果其中任何一个受到损害,那么您当然会遇到问题,但它们的目的不同。刷新令牌用于您与身份验证服务器的交互(我已通过身份验证,如果我已获得授权,请给我一个令牌以调用服务 A),jwt 令牌用于您与服务本身的交互(您好服务 A,我已通过身份验证并授权给您打电话)。
-
这似乎不对。我不认为短期 JWT 的 + 刷新令牌是关注点分离问题。我很确定这个想法是最大限度地减少攻击者访问受损 JWT 的时间,而不会因频繁注销而损害用户体验。如有误解,请见谅。
-
这是一篇描述使用模式的文章:auth0.com/blog/…
-
@KevinHooke 感谢您的文章!我认为我的问题与您提供的文章一致。
标签: rest security jwt refresh-token