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

Mensaje de error

jwt not active

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

Qué significa

`NotBeforeError` de jsonwebtoken: el token tiene un claim (declaración) `nbf` («no antes de») posterior a la hora actual del verificador, así que el token aún no es válido. La propiedad `date` del error contiene el momento en que el token pasa a ser válido. La firma ya se comprobó y es correcta.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Permitir un pequeño desfase de reloj

    `clockTolerance` (en segundos) se aplica tanto a `nbf` como a `exp`. Mantenla en un minuto o menos y corrige la deriva real con NTP en ambas máquinas.

    js
    jwt.verify(token, publicKey, {
      algorithms: ["ES256"],
      clockTolerance: 30, // seconds; applies to nbf and exp
    });
  2. 2.

    Medir con cuánta antelación llega el token

    Compara `err.date` con el reloj del verificador. Unos segundos indican desfase; exactamente el retraso de `notBefore`, que el token se usa demasiado pronto; miles de años, un error de milisegundos.

    js
    try {
      jwt.verify(token, publicKey, { algorithms: ["ES256"] });
    } catch (err) {
      if (err.name === "NotBeforeError") {
        const early = (err.date.getTime() - Date.now()) / 1000;
        console.warn("token becomes valid in", early.toFixed(1), "s");
      }
      throw err;
    }

Errores relacionados

Explorar toda la base de datos de errores de firma