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

Fehlermeldung

jwt must be provided

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

Was der Fehler bedeutet

`jwt.verify()` hat überhaupt kein Token erhalten: Das erste Argument war `undefined`, `null` oder ein leerer String. jsonwebtoken prüft das vor dem Parsen, daher spielen der Schlüssel und das Format des Tokens noch keine Rolle. Das Problem liegt weiter vorn – der Code, der das Token aus der Anfrage holt, hat nichts gefunden.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Token defensiv auslesen und mit 401 antworten

    Prüfe vor dem Aufruf von `verify`, ob das Token fehlt, und antworte mit 401 und einem Header `WWW-Authenticate: Bearer`. Clients sehen dann „nicht authentifiziert“ statt einer 500 durch einen nicht abgefangenen Fehler.

    js
    function bearerToken(req) {
      const [scheme, token] = (req.headers.authorization ?? "").split(" ");
      return scheme?.toLowerCase() === "bearer" && token ? token : null;
    }
    
    app.use((req, res, next) => {
      const token = bearerToken(req);
      if (!token) return res.status(401).set("WWW-Authenticate", "Bearer").end();
      try {
        req.user = jwt.verify(token, publicKey, { algorithms: ["ES256"] });
        next();
      } catch {
        res.status(401).set("WWW-Authenticate", 'Bearer error="invalid_token"').end();
      }
    });
  2. 2.

    Client das Token anhängen lassen

    Vergewissere dich im Netzwerk-Tab des Browsers, dass die Anfrage `Authorization: Bearer …` (oder das Cookie) enthält. Ist der Header im Browser zu sehen, fehlt aber auf dem Server, entfernt ihn ein Proxy dazwischen.

    js
    // Browser / Node 18+ fetch: the token must be attached explicitly.
    await fetch("https://api.example.com/orders", {
      headers: { Authorization: "Bearer " + accessToken },
    });
    
    // Cookies cross origins only with credentials and SameSite=None; Secure.
    await fetch("https://api.example.com/orders", { credentials: "include" });

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen