我需要为每个用户单独pipe理jwt密钥?

我使用jsonwebtoken模块实现了jwtauthentication。 但是在生成和validationjwt令牌时,是否需要为每个用户创build和pipe理任意密钥? 对每个用户分别pipe理密钥和用一个密钥生成和validationjwt令牌是否有区别?

不,你使用一个秘密密钥签署你的代币。 这是因为当令牌在请求中返回给您时,您需要能够对令牌进行解码,并且此时您不知道是否有真正的用户正在发送令牌,因为您尚未validation它。

使用一个密钥来签署和validation您的令牌,并记住保持安全。

对每个用户分别pipe理密钥和用一个密钥生成和validationjwt令牌是否有区别?

简短的答案是否定的,就智威汤逊而言,关键是一个关键。

长的答案是依赖的 。 JWT秘密的目的是确保消息的完整性,通常这是在发行者(服务器)级别上做的事情,作为validation消息来源的一种方式。 通俗地说,如果服务器可以validation签名,那么它可以信任内容。

用户级别的机密将信任从一个级别转移到某个级别,这意味着您不关心哪个服务器生成该消息,而是关心哪个用户所做的。 在典型的身份validation令牌场景中,您确实需要更多的服务器信任。

不,你绝对不需要每个用户的密钥。 在大多数情况下,单个密钥对于所有用户都是足够的。

如果你愿意,你可以有一组不同的按键,并定期旋转它们来签署令牌。 在这种情况下,使用kid标题声明来保存密钥标识符,然后使用它来查找正确的密钥来validation令牌。 在这个答案中看到更多细节。