为什么要使用JWT刷新令牌

时间:2018-11-15 17:03:54

标签: oauth-2.0 jwt refresh-token

我不确定我是否了解刷新令牌的概念。我知道它们的作用-将它们存储在某个地方,只要访问令牌过期,就随它们一起获取一个新的访问令牌。

显然,不泄漏此刷新令牌非常重要,因为否则第三方可以使用它获取新的访问令牌。因此,需要使其格外安全。

我的问题是:为什么不让长寿命访问令牌更加安全?安全性有何不同?

这是auth0.com对此事实的描述,例如:

  

好处:泄漏的访问令牌的访问窗口更短(这些窗口很快过期,从而减少了泄漏的令牌允许访问受保护资源的机会)”

这对我来说没有任何意义。因此,访问令牌很快就会过期,因此如果泄漏,它就“不错”。

另一方面,如果刷新令牌泄漏,则非常糟糕。那么,为什么不只是尝试使访问令牌与刷新令牌一样安全,并获得完全相同的结果却要减少一个令牌呢?

1 个答案:

答案 0 :(得分:3)

有时候,思考问题的另一面会有所帮助,例如令牌发行者,而不是令牌所有者。

示例

想象一下某人的帐户已被管理员删除/阻止。

使用令牌系统时,无法使所有当前令牌失效-JWT样式令牌的主要 point 是拥有有效令牌可以避免集中式检查(实际上,会话Cookie也是如此)。

单个令牌系统的问题

因此,要使其更有效/更方便,在单令牌设置中,该令牌的寿命有时会很大,这意味着所有者( bearer )可以访问数小时或数天。哦,亲爱的。

解决方案:刷新令牌

如Auth0指南所述,刷新令牌系统允许在需要完成刷新之前将此正常寿命降低(例如,减少至几分钟或几秒钟)。此时,服务器/集中控制可以检查该帐户是否已被阻止或权限仍然良好,并相应地发出新的访问令牌。它足够长,可以提供始终不调用身份验证流的性能提升(当然,发送凭据)

另一个用例

一个类似的用例是用户丢失电话/设备,并且他们需要(有效)撤销其拥有的令牌。 希望能有所帮助。

相关问题