Saltar al contenido
ecdsa.com
jsonwebtoken (Node.js)Bibliotecas de JWT

Mensaje de error

jwt must be provided

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

Qué significa

`jwt.verify()` no recibió ningún token: el primer argumento era `undefined`, `null` o una cadena vacía. jsonwebtoken lo comprueba antes de analizar nada, así que ni la clave ni el formato del token importan todavía. El problema está antes: el código que extrae el token de la solicitud no encontró nada.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Extraer el token de forma defensiva y responder con 401

    Comprueba si falta el token antes de llamar a `verify` y devuelve 401 con un encabezado `WWW-Authenticate: Bearer`. Así, los clientes ven «no autenticado» en lugar de un 500 por un error no capturado.

    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.

    Hacer que el cliente adjunte el token

    Confirma en el panel de red del navegador que la solicitud lleva `Authorization: Bearer …` (o la cookie). Si el encabezado se ve en el navegador pero falta en el servidor, lo elimina un proxy intermedio.

    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" });

Errores relacionados

Explorar toda la base de datos de errores de firma