tom*_*ing 5 security authentication token jwt
我有一个非常简单的问题,基本上如标题所述。
在实现包含短期访问令牌和长期刷新令牌的 JWT 身份验证方案时,这两种令牌类型是否应该使用不同的秘密进行签名?
我最近一直在更多地了解这个身份验证方案,在我的阅读中,我没有对这个问题提出强烈的意见或结论性的答案。一些简短的谷歌搜索和搜索 Stack Overflow 也没有产生任何有意义的答案。
感谢您的时间!
从密码学方面来看,我可以同意已接受的答案。
但需要考虑的一件事是,如果您使用相同的密钥,则应该关心如何验证刷新令牌。如果您只是检查 JWT 是否有效,则可以发送访问令牌作为刷新令牌,并从之前的有效访问令牌获取新的访问令牌。
因此,您应该使用不同的密钥,或者注意在 JWT 正文中指定并验证一个标志,指示这是访问令牌还是刷新令牌。
我的直觉告诉我将两个令牌的秘密分开。但不是因为安全原因。我的意思是,如果其中一个秘密泄露,那么你就完了。如果有一两个秘密,攻击面恕我直言是一样的。
我将秘密分开的原因是可用性和错误预防。开发人员有时会做一些愚蠢的事情,比如混合东西。有一天,开发人员将尝试发送刷新令牌来代替访问令牌。如果秘密不同 - 令牌将被简单地拒绝。如果秘密是相同的——接下来发生的事情超出了我的想象(所以我想防止这种情况发生)。