Aller au contenu
ecdsa.com
jose (JavaScript)Bibliothèques JWT

Message d’erreur

"alg" (Algorithm) Header Parameter value not allowed

jose (JavaScript) — JOSEAlgNotAllowed, code ERR_JOSE_ALG_NOT_ALLOWED

Ce que cela signifie

L’en-tête alg du jeton désigne un algorithme qui ne figure pas dans la liste des algorithmes autorisés que vous avez passée à jwtVerify. jose refuse le jeton avant toute opération cryptographique. Ce contrôle est voulu : l’en-tête alg est une entrée contrôlée par l’attaquant, et c’est le vérificateur, et non le jeton, qui doit choisir l’algorithme.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Aligner la liste des algorithmes autorisés, la clé et la configuration de l’émetteur

    Examinez l’en-tête, puis mettez les trois en accord. Pendant une migration, acceptez temporairement les deux algorithmes, chacun avec sa propre clé, désignée par son kid dans le JWKS.

    js
    import { decodeProtectedHeader, jwtVerify } from "jose";
    
    console.log(decodeProtectedHeader(token)); // { alg: "ES256", kid: "..." }
    await jwtVerify(token, jwks, { algorithms: ["ES256"] });
  2. 2.

    Garder la liste des algorithmes autorisés aussi courte que possible

    Ne « corrigez » pas cette erreur en listant tous les algorithmes. Une seule valeur par type de jeton est l’état final sûr ; la RFC 8725 (JWT Best Current Practices) dit la même chose.

    js
    // good: exactly what your issuer signs with
    { algorithms: ["ES256"] }
    // bad: defeats the protection this error provides
    { algorithms: ["ES256", "RS256", "HS256", "PS256"] }

Erreurs associées

Parcourir toute la base de données des erreurs de signature