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

Fehlermeldung

jwt malformed

Was der Fehler bedeutet

jwt.verify() von jsonwebtoken konnte das Token nicht einmal parsen: Der String lässt sich nicht in genau drei durch Punkte getrennte Segmente zerlegen. Die Signatur wurde nie geprüft – der String, den du übergeben hast, ist strukturell kein JWT. (Ein String, der zwar drei Segmente hat, dessen Header aber kein base64url-kodiertes JSON ist, scheitert einen Schritt später mit „invalid token“.)

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Schema-Präfix vor der Prüfung entfernen

    Nimm nur den Token-Teil des Headers Authorization und fang einen fehlenden Header ab, damit du mit einem klaren 401 statt mit „jwt malformed“ abbrichst.

    js
    const auth = req.headers.authorization ?? "";
    const [scheme, token] = auth.split(" ");
    if (scheme !== "Bearer" || !token) {
      return res.status(401).json({ error: "missing bearer token" });
    }
    jwt.verify(token, publicKey, { algorithms: ["ES256"] });
  2. 2.

    Rohwert protokollieren und Segmente zählen

    Eine einzige Logzeile zeigt dir, ob du es mit einem Präfix, einem abgeschnittenen Wert oder der falschen Variable zu tun hast. Ein JWS hat genau 3 Segmente, ein JWE hat 5; alles andere ist kein Token.

    js
    console.log(JSON.stringify(token).slice(0, 80));
    console.log("segments:", String(token).split(".").length); // must be 3
  3. 3.

    Prüfen, was das Token tatsächlich enthält

    Füge den String unten in den JWT-Debugger ein: Er dekodiert Header und Claims lokal und sagt dir genau, welches Segment defekt ist – oder dass der String überhaupt kein JWT ist.

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen