exp est une NumericDate : des secondes depuis 1970-01-01T00:00:00Z, sans compter les secondes intercalaires, et non des millisecondes (une valeur à 13 chiffres est un bug courant dû au Date.now() de JavaScript). Le jeton est invalide dès que l’heure actuelle atteint ou dépasse exp ; les vérificateurs peuvent accorder une petite marge de tolérance, généralement une minute ou deux, pour compenser le décalage d’horloge. Les claims associés sont nbf (pas avant) et iat (date d’émission).
Gardez des jetons d’accès à courte durée de vie (quelques minutes), car un jeton porteur ne peut plus être retiré une fois émis, et utilisez des jetons d’actualisation ou une nouvelle authentification pour les accès de longue durée. Des erreurs comme jwt expired ou Signature has expired signifient que le vérificateur a comparé exp à son horloge : vérifiez les deux horloges avant d’incriminer l’émetteur.