JWT 验证错误“JsonWebTokenError:JWT 签名令牌的签名无效”

问题描述 投票:0回答:1

我正在尝试使用“JsonWebToken”NPM 模块构建 Node.JS API 身份验证中间件。该令牌是使用私钥“private.pem”生成的,并使用公钥“public.pem”进行验证。
但是,当我尝试验证生成的令牌时,我收到错误

JsonWebTokenError: invalid signature

您能帮我找出这段代码的问题吗?预先感谢!
代码如下所示。

签名令牌:


let privateKey = fs.readFileSync('./private.pem', 'utf8');

let token = jwt.sign({ "body": "stuff" }, privateKey, {
  algorithm: 'HS256',
  expiresIn: '1h'
});
res.send(token); 
// Token is then passed as header for verification

验证生成的令牌:


let token = req.headers.authorization.split(' ')[1];

let cert = fs.readFileSync('./public.pem', 'utf8');

jwt.verify(token, cert, { algorithm: "HS256" }, (err, user) => {
   if (err) {  
     console.log(err)
   } else {
     return next();
   }
});

javascript node.js jwt auth0
1个回答
0
投票

当您使用
jwt.verify
方法时,您似乎错误地使用了“算法”。

尝试下面的代码。

let token = req.headers.authorization.split(' ')[1];
let cert = fs.readFileSync('./public.pem', 'utf8');

jwt.verify(token, cert, { algorithm: ["HS256"] }, (err, user) => {
   if (err) {  
     console.log(err)
   } else {
     return next();
   }
});

参考

https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

© www.soinside.com 2019 - 2024. All rights reserved.