Aller au contenu
ecdsa.com
jose (JavaScript)Bibliothèques JWT

Message d’erreur

"exp" claim timestamp check failed

jose (JavaScript) — JWTExpired, code ERR_JWT_EXPIRED

Ce que cela signifie

La validation des claims de jose a rejeté le jeton parce que son horodatage exp est dans le passé par rapport à l’horloge du vérificateur. La vérification de la signature avait déjà réussi : il s’agit uniquement d’un défaut de fraîcheur. jose emploie la même formulation pour d’autres claims (« "nbf" claim timestamp check failed ») lorsqu’un jeton est utilisé avant son début de validité.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Ajouter une tolérance d’horloge bornée

    jose accepte une option clockTolerance (un nombre de secondes ou une chaîne lisible par un humain). Gardez-la faible : elle sert à absorber la dérive, pas à prolonger la durée de vie.

    js
    import { jwtVerify } from "jose";
    
    await jwtVerify(token, key, {
      algorithms: ["ES256"],
      clockTolerance: "30s",
    });
  2. 2.

    Afficher la chronologie avant de modifier quoi que ce soit

    Comparez iat, exp et l’instant présent du vérificateur. Le schéma vous indique la cause : exp déjà passé de plusieurs secondes → problème d’actualisation ; exp avant iat → bogue d’émission ; exp ≈ maintenant mais échec → décalage d’horloge.

    js
    import { decodeJwt } from "jose";
    
    const { iat, exp } = decodeJwt(token);
    console.log({ iat: new Date(iat * 1000), exp: new Date(exp * 1000), now: new Date() });

Erreurs associées

Parcourir toute la base de données des erreurs de signature