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

Fehlermeldung

invalid signature

Was der Fehler bedeutet

Das Token ließ sich problemlos parsen und seine Struktur ist gültig, aber die kryptografische Prüfung ist fehlgeschlagen: Die Signatur über header.payload lässt sich mit dem von dir übergebenen Schlüssel nicht bestätigen. Entweder ist es nicht der Schlüssel, mit dem das Token signiert wurde, oder die signierten Bytes haben sich nach dem Signieren verändert.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Fingerabdruck des Schlüssels auf beiden Seiten vergleichen

    Bilde den Hash des öffentlichen Schlüssels, den die prüfende Seite tatsächlich geladen hat, und vergleiche ihn mit dem des Ausstellers. Weicht der Fingerabdruck ab, ist der Schlüssel veraltet oder falsch – mit Abstand die häufigste Ursache –, und die Suche ist in einem Schritt beendet.

    js
    import { createHash, createPublicKey } from "node:crypto";
    
    // Run on the verifier, and on the issuer with its signing key: the outputs must match.
    const spki = createPublicKey(process.env.JWT_PUBLIC_KEY).export({ type: "spki", format: "der" });
    console.log(createHash("sha256").update(spki).digest("hex"));
  2. 2.

    kid des Tokens mit dem Prüfschlüssel abgleichen

    Dekodiere den Header ohne Prüfung und vergleiche seinen kid mit dem Schlüssel, den du hast. Veröffentlicht der Aussteller ein JWKS, ermittle den Schlüssel per kid, statt einen fest im Code zu hinterlegen.

    js
    const { header } = jwt.decode(token, { complete: true });
    console.log(header.kid, header.alg); // compare with your JWKS / configured key
  3. 3.

    Den Debugger die Abweichung benennen lassen

    Füge Token und öffentlichen Schlüssel in den JWT-Debugger ein: Er prüft ES256/ES384/ES512 lokal und unterscheidet zwischen falschem Schlüssel, manipulierter Payload und fehlerhafter Kodierung der Signatur, statt nur einen Boolean zu liefern.

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen