Узел jsonwebtoken проверяется любой подписью

Я использую библиотеку jsonwebtoken для подписи и создания JWT, которые будут использоваться для безопасности API,

Код выглядит нормально, когда я пытаюсь проверить подпись с действительным 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 ответ

Решение

Вы только что подписали некоторые данные с помощью закрытого ключа, любой может прочитать данные с использованием или без использования закрытого ключа, но не может изменить его содержимое. Вот как работает JWT.

На jwt.io вы ввели новый секрет, и сайт ответил Signature Verified Это означает, что ваши данные теперь подписаны с новым секретом, и токен регенерирован, этот токен не должен передаваться вашему бэкэнду, поскольку он недействителен.

Другие вопросы по тегам