Saltar al contenido
ecdsa.com
jsonwebtoken (Node.js)Bibliotecas de JWT

Mensaje de error

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

El texto que sigue a «expected:» es lo que hayas configurado; con un array de emisores, los valores se unen con comas.

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

Qué significa

El claim (declaración) `iss` del token no es igual a la opción `issuer` que pasas a `jwt.verify()` (o el token no tiene `iss` en absoluto). El texto que sigue a «expected:» es el valor de tu configuración, no el del token. jsonwebtoken compara las cadenas de forma exacta, así que la firma es válida, pero el token dice venir de un origen en el que tu servicio no confía.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Imprimir el iss del token como JSON

    `JSON.stringify` hace visibles las diferencias invisibles: barras finales, espacios en blanco, otra ruta. Después, copia el `issuer` del proveedor de `/.well-known/openid-configuration` a tu configuración.

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

    Aceptar varios emisores solo de forma deliberada

    La opción `issuer` acepta un array. Úsalo para una migración planificada entre dos formas de escribir el emisor o entre emisores que controlas, y asocia cada emisor con sus propias claves.

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

Errores relacionados

Explorar toda la base de datos de errores de firma