reference_token与长TTL和refresh_token +短命JWT之间的区别是什么?

时间:2018-02-19 09:28:11

标签: oauth oauth-2.0 jwt identityserver4

我们在SPA中使用了refresh_tokens + JWT,Identityserver3作为TokenServer(STS)。我注意到这是不推荐的,我们应该使用reference_token,因为在令牌被泄露的情况下可以撤销。

用户要求必须保持登录状态30天。

参考代币(方法1)
在这种情况下,STS发出一个带有长TTL(30天)的reference_token。 它还建议资源所有者将reference_token缓存一小段时间(10分钟TTL)以提高性能。

如果reference_token被泄露,它可以在STS中被撤销,资源将在10分钟内拒绝请求(取决于缓存)。

这是有道理的。

刷新令牌+短命JWT(接近2)
在方法2中,STS发出一个短寿命JWT(10分钟TTL)和更长刷新时间(30天)。资源检查JWT的有效性(最长只有10分钟)。

如果refresh_token被泄露,则可以在STS中撤销它,并且客户端将无法生成新的JWT。资源将在10分钟内拒绝请求(取决于JWT创建时间)。

从安全角度来看,我没有看到方法1和方法2之间的区别。

有人可以进一步解释这个并帮助我推理出去的路径吗?

1 个答案:

答案 0 :(得分:0)

第二种方法有一个额外的攻击向量,即可以从刷新令牌获取的访问令牌。

在这种情况下,我认为没有理由不使用引用令牌。这就是他们的目的。