Перейти к содержимому
ecdsa.com
jsonwebtoken (Node.js)Библиотеки JWT

Сообщение об ошибке

jwt issuer invalid. expected: https://login.example.com/

После «expected:» стоит значение, которое вы задали в настройках; если издатели переданы массивом, значения перечисляются через запятую.

jsonwebtoken (Node.js) — JsonWebTokenError from jwt.verify()

Что это означает

Утверждение `iss` токена не равно параметру `issuer`, который вы передали в `jwt.verify()` (или в токене вообще нет `iss`). Текст после «expected:» — это заданное вами значение, а не значение из токена. jsonwebtoken сравнивает строки точно: подпись верна, но токен заявляет, что пришёл из источника, которому ваш сервис не доверяет.

Почему это происходит

Как исправить

  1. 1.

    Выведите iss токена в виде JSON

    `JSON.stringify` делает видимыми незаметные различия: косую черту в конце, пробельные символы, другой путь. Затем скопируйте `issuer` провайдера из `/.well-known/openid-configuration` в свою конфигурацию.

    js
    const { iss } = jwt.decode(token) ?? {};
    console.log(JSON.stringify(iss)); // compare byte for byte with your issuer option
  2. 2.

    Принимайте нескольких издателей только осознанно

    Параметр `issuer` принимает массив. Используйте его для плановой миграции между двумя вариантами написания или между издателями, которыми вы управляете, и привязывайте к каждому издателю его собственные ключи.

    js
    jwt.verify(token, publicKey, {
      algorithms: ["ES256"],
      issuer: ["https://login.example.com/", "https://login.example.com"], // during a migration only
    });

Связанные ошибки

Открыть всю базу ошибок подписей