节点jsonwebtoken得到任何签名的验证

时间:2019-04-03 02:02:19

标签: node.js jwt json-web-signature

我正在使用jsonwebtoken库签名并创建用于API安全的JWT,

当我尝试使用有效的JWT_SECRET_TOKEN验证签名时,代码看起来工作正常,而当我使用错误的JWT_WRONG_TOKEN时抛出错误,

但是,当我复制令牌并将其放入https://jwt.io/时,
它显示了Signature Verified,代表我输入的任何机密。

以下是我的代码-

const jwt = require('jsonwebtoken');

const JWT_SECRET_TOKEN = 'secret';
const JWT_WRONG_TOKEN = 'test';
const DATA = 'My Test Data';

// Equivalent to 1 Hour
// Data should be an Object to be signed
let token = jwt.sign({data: DATA}, JWT_SECRET_TOKEN, { expiresIn: 60 * 60 * 1 });

console.log("Encoded token => ",token);
console.log("token => "+JSON.stringify(jwt.decode(token)));

jwt.verify(token, JWT_SECRET_TOKEN, function (err, decoded) {
//jwt.verify(token, JWT_WRONG_TOKEN, function (err, decoded) {
    if (err) {             
        console.log('Error => ', err);

        if (err.name === 'TokenExpiredError') {
            console.log("AUTH_EXPIRED");
        } 
        else if (err.name === 'JsonWebTokenError') {
            console.log("JWT_ERROR");
        }
        else if (err.name === 'NotBeforeError') {
            console.log("JWT_NOT_ACTIVE");
        } else {
            console.log("ERR_ON");
        }

    } else {
        console.log('Success => ', decoded)
    }
  })

参考-
1. https://www.npmjs.com/package/jsonwebtoken
2. https://jwt.io/

我在做什么错了?
我该如何解决?

1 个答案:

答案 0 :(得分:1)

您只是使用私钥对某些数据进行了签名,任何人都可以使用或不使用私钥来读取数据,但是不能更改其内容。这就是JWT的工作方式。

在jwt.io上,您输入了一个新密码,并且网站回复了Signature Verified,这意味着您的数据现在已使用新密码进行签名,并且令牌已重新生成,该令牌不应该在后端传递,因为其无效。