Aller au contenu
ecdsa.com
jsonwebtoken (Node.js)Bibliothèques JWT

Message d’erreur

jwt not active

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

Ce que cela signifie

Il s’agit de l’erreur `NotBeforeError` de jsonwebtoken : le jeton contient un claim `nbf` (« pas avant ») dont la date est postérieure à l’heure actuelle du vérificateur, il n’est donc pas encore valide. La propriété `date` de l’erreur indique le moment où le jeton devient valide. La signature a déjà été vérifiée et elle est correcte.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Autoriser un faible décalage d’horloge

    `clockTolerance` (en secondes) s’applique à la fois à `nbf` et à `exp`. Limitez-la à une minute au maximum et corrigez la dérive réelle avec NTP sur les deux machines.

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

    Mesurer l’avance du jeton

    Comparez `err.date` avec l’horloge du vérificateur. Un écart de quelques secondes indique un décalage d’horloge ; un écart égal exactement au délai `notBefore` signifie que le jeton est utilisé trop tôt ; un écart de plusieurs milliers d’années trahit un bug de millisecondes.

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

Erreurs associées

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