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

Fehlermeldung

jwt signature is required

jsonwebtoken (Node.js) — JsonWebTokenError from jwt.verify()

Was der Fehler bedeutet

Das dritte Segment des Tokens ist leer – es ist ein ungesichertes JWT (`alg: "none"`) oder ein signiertes Token, dessen Signatur abgeschnitten wurde –, aber du hast `verify()` mit einem Schlüssel aufgerufen, also ist eine Signatur Pflicht. jsonwebtoken lehnt ab, statt Claims zu akzeptieren, die niemand signiert hat. Erreichen solche Tokens deine API von außen, sucht womöglich jemand gezielt nach der klassischen Schwachstelle „alg none“.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Ablehnung und Algorithmen-Allowlist beibehalten

    Prüfe mit einer expliziten Liste `algorithms`, die nur das nennt, was dein Aussteller verwendet. Protokolliere die Herkunft der Anfrage, wenn unsignierte Tokens von außen eintreffen; baue keinen Codepfad ein, der sie akzeptiert.

    js
    // Always pass an explicit allow-list; "none" must never be in it.
    const claims = jwt.verify(token, publicKey, { algorithms: ["ES256"] });
  2. 2.

    Test-Tokens mit einem Wegwerfschlüssel signieren

    Erzeuge im Test-Setup ein Schlüsselpaar und signiere die Fixtures damit, sodass die Tests denselben Prüfpfad durchlaufen wie in der Produktion.

    js
    import { generateKeyPairSync } from "node:crypto";
    
    // Test setup: a throwaway key pair, real signatures, same verification path as production.
    const { privateKey, publicKey } = generateKeyPairSync("ec", { namedCurve: "P-256" });
    const token = jwt.sign({ sub: "test-user" }, privateKey, { algorithm: "ES256", expiresIn: "5m" });

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen