Zum Inhalt springen
ecdsa.com
jose (JavaScript)JWT-Bibliotheken

Fehlermeldung

"alg" (Algorithm) Header Parameter value not allowed

jose (JavaScript) — JOSEAlgNotAllowed, code ERR_JOSE_ALG_NOT_ALLOWED

Was der Fehler bedeutet

Der Header alg des Tokens nennt einen Algorithmus, der nicht in der Allowlist der Algorithmen steht, die du jwtVerify übergeben hast. jose lehnt ab, bevor überhaupt eine kryptografische Operation läuft. Diese Sperre ist Absicht: Der Header alg ist eine Eingabe, die ein Angreifer frei wählen kann, und den Algorithmus muss die prüfende Seite festlegen – nicht das Token.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Allowlist, Schlüssel und Konfiguration des Ausstellers abgleichen

    Sieh dir den Header an und bring dann alle drei in Einklang. Akzeptiere während einer Migration vorübergehend beide Algorithmen, jeden mit seinem eigenen Schlüssel, ausgewählt über kid im JWKS.

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

    Allowlist so klein wie möglich halten

    Versuch nicht, diesen Fehler zu „beheben“, indem du jeden Algorithmus in die Liste aufnimmst. Ein Wert pro Token-Typ ist der sichere Endzustand; RFC 8725 (JWT Best Current Practices) sagt dasselbe.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen