在将 JWT 与自然不安全的客户端(浏览器、手机等)一起使用时,我很难理解刷新令牌的使用。
对我来说,如果 JWT 被泄露,那么刷新令牌也不会被泄露,这种想法似乎很天真。
只要刷新令牌保持有效,攻击者本质上就拥有无限的 JWT 来源。即使您使使用的刷新令牌无效,如果攻击者实施稍微更激进的刷新策略,他们仍然占据上风。这与受损的长寿命 JWT 有什么不同?
当使用长期存在的 JWT 时,攻击者只有能够持续利用最初为他们提供 JWT 的任何漏洞,才能继续获取有效的 JWT。通过刷新令牌,他们可以通过漏洞获取 JWT 一次,然后不受惩罚地获取新的 JWT。这看起来要么与长期存在的 JWT 一样安全,要么甚至不太安全。
我缺少什么?
刷新令牌是可撤销的。如果它们被泄露,它们可以立即在授权服务器上被撤销,并且不会再生成 JWT。
另一方面,JWT 通常是独立的。这意味着它们是通过检查令牌的数字签名在本地进行验证的。一旦发布就不能撤销。这就是为什么它们永远不应该长寿。
如果 JWT 和刷新令牌都被泄露,您将撤销刷新令牌,一旦 JWT 过期,攻击者将无法获得访问权限。这可能意味着撤销不会立即进行。
另一种选择是使用长期引用令牌而不是 JWT 和刷新令牌。在这种情况下,可以立即撤销。缺点是引用令牌的每次使用都需要针对授权服务器进行验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)