Zum Inhalt springen
ecdsa.com
jsonwebtoken (Node.js)JWT-Bibliotheken

Fehlermeldung

invalid algorithm

Was der Fehler bedeutet

Der Wert im Header alg des Tokens steht nicht in der Liste der Algorithmen, die deine prüfende Seite akzeptiert. jsonwebtoken prüft das, bevor es die Signatur überhaupt anfasst, das Token kann also einwandfrei signiert sein – nur mit einem Verfahren, das du nicht zugelassen hast. Diese Sperre ist eine Sicherheitsfunktion, die wie vorgesehen arbeitet, kein Parsing-Bug.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Allowlist auf das festlegen, was der Aussteller wirklich verwendet

    Dekodiere den Header, um den tatsächlichen alg zu sehen, und setze die Allowlist dann auf genau diesen Wert – und stelle sicher, dass der Schlüsseltyp passt (EC-Schlüssel für ES256, RSA-Schlüssel für RS256).

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

    Algorithmuswechsel in zwei Phasen ausrollen

    Während einer Rotation von Schlüssel und Algorithmus müssen prüfende Dienste kurzzeitig beide Verfahren akzeptieren – jedes über kid an seinen eigenen Schlüssel gebunden – und danach wieder auf eines zurückgehen.

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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen