JWT用密钥用户密码

时间:2017-11-01 13:41:44

标签: security jwt signing

我想在我的应用程序中使用JWT。 现在我想知道将用户密码与私人秘密结合使用作为签署我的令牌的密钥是否安全。这样,如果用户更改了他/她的密码,令牌就会失效。 但也许这让我的私人秘密变得脆弱? 谢谢你的想法!

2 个答案:

答案 0 :(得分:2)

通常情况下,使用相同的密钥对所有令牌进行签名。简化管理并避免在每个请求中查询数据库。

使用密钥+用户密码签名是可行的,并且具有允许撤销令牌的优点(带有注释的缺点)。

确保您的签名密钥足够安全,从用户密码中获取,并具有所选签名算法的建议长度。不要直接存储或使用用户密码。

答案 1 :(得分:1)

秘密是在客户端和服务器之间交换的预共享字符串。 所以在你的情况下:

         SecretString= PresharedSecret + ClientPassword

因此,每次客户端传递JWT令牌时,您都需要从数据库中检索密码或者预先加载密码并在密码更改时进行检查以验证令牌。

这可能会导致以下情况:

  1. 每次客户端忘记密码时,您可能需要进行昂贵的数据库调用
  2. 它会以一种方式增强安全性,因为任何更改密码的人都无法在知道前一个SecretString的情况下与服务器通信。 需要确定一个新的预共享秘密..并使用新的注册密码进行验证。
  3. 总的来说,它确实提高了安全性。但是,它取决于基础设施的用途或用途。如果它是一个用户经常忘记密码的系统......这可能不是一个很好的选择。