我想在我的应用程序中使用JWT。 现在我想知道将用户密码与私人秘密结合使用作为签署我的令牌的密钥是否安全。这样,如果用户更改了他/她的密码,令牌就会失效。 但也许这让我的私人秘密变得脆弱? 谢谢你的想法!
答案 0 :(得分:2)
通常情况下,使用相同的密钥对所有令牌进行签名。简化管理并避免在每个请求中查询数据库。
使用密钥+用户密码签名是可行的,并且具有允许撤销令牌的优点(带有注释的缺点)。
确保您的签名密钥足够安全,从用户密码中获取,并具有所选签名算法的建议长度。不要直接存储或使用用户密码。
答案 1 :(得分:1)
秘密是在客户端和服务器之间交换的预共享字符串。 所以在你的情况下:
SecretString= PresharedSecret + ClientPassword
因此,每次客户端传递JWT令牌时,您都需要从数据库中检索密码或者预先加载密码并在密码更改时进行检查以验证令牌。
这可能会导致以下情况:
总的来说,它确实提高了安全性。但是,它取决于基础设施的用途或用途。如果它是一个用户经常忘记密码的系统......这可能不是一个很好的选择。