刷新令牌如何比长期存在的 JWT 更安全?

ant*_*tor 7 security rest jwt refresh-token

在自然不安全的客户端(浏览器、手机等)中使用 JWT 时,我很难理解刷新令牌的使用。

对我来说,认为如果 JWT 被破坏,刷新令牌也没有被破坏的想法似乎很幼稚。

只要刷新令牌保持有效,攻击者本质上就拥有无限的 JWT 来源。即使您使使用的刷新令牌无效,如果攻击者实施稍微激进的刷新策略,他们仍然占上风。这与受损的长寿命 JWT 有何不同?

当使用长期存在的 JWT 时,攻击者只能继续获得有效的 JWT,前提是他们有能力持续利用首先赋予他们 JWT 的任何漏洞。使用刷新令牌,他们可以通过一次漏洞获得 JWT,然后随心所欲地获得新的 JWT,而不受惩罚。这似乎与长期存在的 JWT 一样安全,甚至可能更不安全。

我错过了什么?

Ste*_*nOS 5

刷新令牌是可撤销的。如果它们受到威胁,它们可以立即在授权服务器上被撤销,并且不会产生更多的 JWT。

另一方面,JWT 通常是独立的。这意味着它们通过检查令牌的数字签名在本地进行验证。一经发出,便不可撤销。这就是为什么它们永远不应该长寿的原因。

如果 JWT 和刷新令牌都受到威胁,您将撤销刷新令牌,一旦 JWT 过期,攻击者将无法访问。这可能意味着撤销不是立即的。

另一种选择是使用长期引用令牌而不是 JWT 和刷新令牌。在这种情况下,可以立即撤销。缺点是每次使用参考令牌都需要针对授权服务器进行验证。