我需要为每个用户单独pipe理jwt密钥?
我使用jsonwebtoken模块实现了jwtauthentication。 但是在生成和validationjwt令牌时,是否需要为每个用户创build和pipe理任意密钥? 对每个用户分别pipe理密钥和用一个密钥生成和validationjwt令牌是否有区别?
不,你使用一个秘密密钥签署你的代币。 这是因为当令牌在请求中返回给您时,您需要能够对令牌进行解码,并且此时您不知道是否有真正的用户正在发送令牌,因为您尚未validation它。
使用一个密钥来签署和validation您的令牌,并记住保持安全。
对每个用户分别pipe理密钥和用一个密钥生成和validationjwt令牌是否有区别?
简短的答案是否定的,就智威汤逊而言,关键是一个关键。
长的答案是依赖的 。 JWT秘密的目的是确保消息的完整性,通常这是在发行者(服务器)级别上做的事情,作为validation消息来源的一种方式。 通俗地说,如果服务器可以validation签名,那么它可以信任内容。
用户级别的机密将信任从一个级别转移到某个级别,这意味着您不关心哪个服务器生成该消息,而是关心哪个用户所做的。 在典型的身份validation令牌场景中,您确实需要更多的服务器信任。
不,你绝对不需要每个用户的密钥。 在大多数情况下,单个密钥对于所有用户都是足够的。
如果你愿意,你可以有一组不同的按键,并定期旋转它们来签署令牌。 在这种情况下,使用kid
标题声明来保存密钥标识符,然后使用它来查找正确的密钥来validation令牌。 在这个答案中看到更多细节。
- ctx.render不会redirect页面
- 节点快递护照(JWT) – auth后callback
- JWTauthentication系统使用nodejs在网页上
- 用于Firebase Admin SDK的Node.js身份validation服务器 – JWTvalidation问题
- 在Rest API中使用Facebook维护Express和NodeJS中的JWT的密钥和访问令牌
- jsonnetworking令牌,passport-jwt及其validationfunction
- 如果使用授权承载令牌,则为400错误请求
- 尝试在节点中实现JWT身份validation。 在受保护的路线上获得未经授权
- 寻找JWT Auth微服务的例子