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