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

Mensaje de error

invalid algorithm

Qué significa

El valor del encabezado alg del token no está en la lista de algoritmos que acepta tu verificador. jsonwebtoken lo comprueba antes de tocar la firma, así que el token puede estar perfectamente firmado, solo que con un esquema que no está entre los permitidos. Este filtro es una medida de seguridad que funciona según lo previsto, no un error de análisis.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Fijar la lista de permitidos a lo que usa realmente el emisor

    Decodifica el encabezado para ver el alg real y luego configura la lista de permitidos exactamente con ese valor; asegúrate también de que el tipo de clave coincide (clave EC para ES256, clave RSA para RS256).

    js
    const { header } = jwt.decode(token, { complete: true });
    console.log(header.alg); // e.g. "ES256"
    
    jwt.verify(token, ecPublicKeyPem, { algorithms: ["ES256"] });
  2. 2.

    Desplegar los cambios de algoritmo en dos fases

    Durante una rotación de claves o de algoritmo, los verificadores deben aceptar brevemente ambos esquemas, cada uno ligado a su propia clave mediante kid, y después volver a uno solo.

    js
    // transition window only:
    jwt.verify(token, keyForKid(header.kid), { algorithms: ["ES256", "RS256"] });
    // after all RS256 tokens expired:
    jwt.verify(token, ecPublicKeyPem, { algorithms: ["ES256"] });

Errores relacionados

Explorar toda la base de datos de errores de firma