具有长 TTL 的引用令牌和刷新令牌+短寿命 JWT 有啥区别?
Posted
技术标签:
【中文标题】具有长 TTL 的引用令牌和刷新令牌+短寿命 JWT 有啥区别?【英文标题】:What's the difference between reference_token with long TTL and refresh_token+short lived JWT?具有长 TTL 的引用令牌和刷新令牌+短寿命 JWT 有什么区别? 【发布时间】:2018-07-29 12:00:21 【问题描述】:我们一直在我们的 SPA 中使用 refresh_tokens + JWT,并将 Identityserver3 作为 TokenServer (STS)。我注意到不建议这样做,我们应该改用reference_token,因为在令牌被泄露的情况下具有可撤销性。
用户要求保持登录状态 30 天。
参考标记(方法 1) 在这种情况下,STS 发出一个具有长 TTL(30 天)的 reference_token。 还建议资源所有者将 reference_token 缓存一小段时间(10 分钟 TTL)以提高性能。
如果 reference_token 被泄露,它可以在 STS 中被撤销,Resources 将在 10 分钟内拒绝请求(取决于缓存)。
这是有道理的。
刷新令牌 + 短期 JWT(方法 2) 在方法 2 中,STS 发出一个短期 JWT(10 分钟 TTL)和一个较长的 refresh_token(30 天)。资源检查 JWT 的有效性(最多只能有效 10 分钟)。
如果 refresh_token 被泄露,它可以在 STS 中被撤销,客户端将无法生成新的 JWT。资源将在 10 分钟内拒绝请求(取决于 JWT 创建时间)。
从安全的角度来看,我看不出方法 1 和方法 2 之间的区别。
有人可以进一步解释这一点并帮助我推理要走的路吗?
【问题讨论】:
【参考方案1】:第二种方法有一个额外的攻击向量,即可以从刷新令牌中获得的访问令牌。
我认为在这种情况下您没有理由不使用引用标记。这就是他们的目的。
【讨论】:
以上是关于具有长 TTL 的引用令牌和刷新令牌+短寿命 JWT 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章