我将在使用Java-Jersey开发的REST API中应用JWT。我正在使用这个JWT库 - https://github.com/auth0/java-jwt
我有几个关于JWT-Secret的问题:
- 这个秘钥必须是唯一的吗?
- 我是否应该使用用户密码的哈希版本作为密钥?(那么它也不是唯一的)因为当用户更改密码时,他的令牌将自动失效。
- 这个
Secret
需要唯一吗?
它应该是对于您的应用程序是唯一的 - 毕竟这是一个秘密,但对于每个令牌来说并不唯一。相反,您应该在任何给定时间内拥有相对较少的秘密密钥(例如通常只有一个密钥,但在从一个密钥旋转到下一个密钥时会有短暂的两个密钥)。
- 我应该使用用户密码的哈希版本作为密钥吗?
不行,有两个原因:
GoPackers123
。在您的密钥中使用密码意味着某人可以轻松地测试给定的潜在密码,以查看它是否产生正确的签名; 更重要的是,他们可以轻松地测试大量的潜在密码,以查看是否有任何一个给出了正确的签名。这是一种离线攻击,所以您甚至不会知道它发生了。HS256
还是RSA256
? - PeakGensecret
和HS256
,我注意到我的所有用户都得到了相同的token
。该API由此令牌保护。这是正常的行为吗? - PeakGensecret
和 HS256
。有10个用户。当他们登录时,系统为每个人生成了相同的令牌,因为密钥是相同的。我认为这是正常的方式? - PeakGen
java-jwt
中使用了一个硬编码的secret
和HS256
。我注意到所有用户都得到了相同的token
。API使用此令牌进行安全保护。这是正常行为吗? - PeakGen