【问题标题】:Does jwt always uses same secret key for all the users?jwt 是否总是为所有用户使用相同的密钥?
【发布时间】:2021-09-27 23:06:40
【问题描述】:

我想知道,在随后对服务器的请求中,客户端将 JWT 令牌发送回服务器。 在服务器端,服务器提取头部和有效负载以及一些已经在服务器上的密钥,这样服务器就可以修改 JWT 并与签名进行比较。 所以我在想服务器如何识别使用哪个密钥来改造 JWT 以测试来自客户端的传入令牌。或者它总是为所有客户端使用相同的密钥? 或者这个绿色秘密是如何从服务器上来的?

【问题讨论】:

  • 一般情况下是的,正常操作是为所有用户使用一个密钥。关键是要保守你的密钥秘密
  • @slebetman 所以一些恶意用户能够破解密钥,他可以访问每个人的帐户..有条件地他已经可以访问标题一个有效负载部分......
  • @NoviceToDotNet 如果用户可以神奇地猜出密钥,是的,他可以更改他的权限或伪造另一个用户身份,但这不是一件容易的事。您可能会选择一个无法猜测且需要数年时间才能破解的长密钥。
  • 就像比特币一样,JWT 代币基于数字签名。就像比特币一样,一旦有人知道你的密钥,他们就可以花掉你所有的钱。如我所说。使加密货币和 JWT 代币安全的核心理念是,您应该保密您的密钥——这意味着永远不要将它们提交到您的 git 存储库(除非您从不打算与其他人一起处理代码),确保您的秘密关键是好的和不可猜测的等等。
  • ... 但是,与使用 JWT 的比特币不同,您可以定期更换您的密钥,但这会强制所有登录用户退出。通常,尽管大多数网站从不这样做,但您必须确保您的服务器在保护层之后是安全的 - 配置文件的权限设置正确,您的操作系统始终更新,您的服务器位于防火墙后面,您不会不必要地公开端口,您的应用通过 Nginx 或 Apache 等强化网络服务器代理。

标签: jwt


【解决方案1】:

我遇到的所有场景都使用通常从配置文件或环境变量中读取的单个密钥,但为不同的用户使用不同的密钥并不难。 JWT 检查令牌的完整性,不加密令牌。因此,例如,您可以将用于令牌的密钥的哈希值保留在标头部分中,当您收到令牌时,请读取标头并找出您需要使用的密钥。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2012-08-02
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多