节点 jsonwebtoken 使用任何签名进行验证
Node jsonwebtoken getting verified with any signature
我正在使用 jsonwebtoken 库来签署和创建用于 API 安全的 JWT,
当我尝试使用有效的 JWT_SECRET_TOKEN
验证签名时代码看起来工作正常,但当我使用错误的 JWT_WRONG_TOKEN
[=17= 时抛出错误]
然而,当我复制令牌并将其放入 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/
我做错了什么?
如何解决?
您刚刚使用私钥签署了一些数据,任何人都可以在有或没有私钥的情况下读取数据,但不能更改其内容。这就是 JWT 的工作原理。
您在 jwt.io 上输入了一些新密码,网站响应 Signature Verified
这意味着您的数据现在已使用新密码进行签名,并且会重新生成令牌,该令牌不应传递到您的后端因为无效。
我正在使用 jsonwebtoken 库来签署和创建用于 API 安全的 JWT,
当我尝试使用有效的 JWT_SECRET_TOKEN
验证签名时代码看起来工作正常,但当我使用错误的 JWT_WRONG_TOKEN
[=17= 时抛出错误]
然而,当我复制令牌并将其放入 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/
我做错了什么?
如何解决?
您刚刚使用私钥签署了一些数据,任何人都可以在有或没有私钥的情况下读取数据,但不能更改其内容。这就是 JWT 的工作原理。
您在 jwt.io 上输入了一些新密码,网站响应 Signature Verified
这意味着您的数据现在已使用新密码进行签名,并且会重新生成令牌,该令牌不应传递到您的后端因为无效。