我们在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之间的区别。
有人可以进一步解释这个并帮助我推理出去的路径吗?
答案 0 :(得分:0)
第二种方法有一个额外的攻击向量,即可以从刷新令牌获取的访问令牌。
在这种情况下,我认为没有理由不使用引用令牌。这就是他们的目的。