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

Mensaje de error

jwt expired

Qué significa

TokenExpiredError de jsonwebtoken: el claim (declaración) exp del token (una marca de tiempo Unix en segundos) es anterior a la hora actual del reloj del verificador. La firma en sí puede ser perfectamente válida: simplemente, el token ha superado la vida útil que le dio el emisor. El objeto de error incluye expiredAt con el momento exacto.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Permitir explícitamente un desfase pequeño

    clockTolerance acepta segundos y se aplica a exp y nbf. Mantenla baja (30–60 s): sirve para absorber la deriva del reloj, no para alargar la vida útil de los tokens.

    js
    jwt.verify(token, publicKey, {
      algorithms: ["ES256"],
      clockTolerance: 30, // seconds of tolerated skew
    });
  2. 2.

    Inspeccionar exp antes de culpar al reloj

    Decodifica los claims e imprime exp junto a tu hora actual. Si exp se parece a 1.7e12, tienes un error de milisegundos; si está unos minutos en el pasado, necesitas lógica de actualización.

    js
    const { exp } = jwt.decode(token);
    console.log("exp:", new Date(exp * 1000).toISOString());
    console.log("now:", new Date().toISOString());
  3. 3.

    Sincronizar los relojes y añadir una vía de actualización

    Ejecuta NTP (chrony/systemd-timesyncd) en los hosts que verifican e implementa en el cliente la actualización del token ante respuestas 401. Nunca lleves ignoreExpiration: true a producción: convierte cada token filtrado en una credencial permanente.

Errores relacionados

Explorar toda la base de datos de errores de firma