← JWT, JWS et JWE — architecture et validation avancées

Module 10 / 12 · 90 min

10. Expiration, révocation et incident

Définir le délai réel de retrait d’accès.

Votre progression apparaîtra ici lorsque JavaScript est actif.

La progression et le meilleur score sont enregistrés uniquement dans ce navigateur. Aucun compte n’est nécessaire ; effacer les données du navigateur les supprime. Les durées de modules sont indicatives et incluent les exercices.

Comprendre le mécanisme

Un jeton autonome vérifié localement peut rester accepté jusqu’à expiration si le validateur ne consulte aucun état de révocation. Une opération de révocation chez un fournisseur ne se propage donc pas magiquement à toutes les API. Le système doit choisir entre vérifications d’état, durées courtes, listes ciblées ou autre mécanisme documenté, avec ses coûts de disponibilité et de cohérence.

Raisonner et vérifier

Distinguez logout du navigateur, retrait d’un refresh token et invalidation d’un access token déjà émis. Le délai maximal d’acceptation après désactivation doit être mesuré, pas déduit du mot stateless. Une compromission de clé peut imposer une action plus large qu’une seule session. Testez chronologie, cache et instances avec une horloge contrôlée et des clés de laboratoire.

Acceptation autonome

Un token autonome peut rester accepté jusqu’à exp. Les validateurs doivent recevoir ou consulter un état pertinent. Un validateur qui contrôle seulement signature et exp peut accepter une ancienne copie jusqu’à l’échéance. La suppression dans un navigateur ne change pas les octets ni les règles de ce validateur.

Erreur fréquente à comprendre

Un logout local révoque automatiquement toutes ses copies.

Les validateurs doivent recevoir ou consulter un état pertinent.

Deux capacités

Retrait de refresh token et d’access token sont distincts. Le mécanisme des serveurs de ressources compte. Retirer le refresh token empêche un renouvellement selon la politique serveur. Les access tokens déjà émis suivent leur propre validation et peuvent rester admis tant qu’aucun mécanisme ne les retire.

Erreur fréquente à comprendre

Révoquer un refresh token annule instantanément tout access token partout.

Le mécanisme des serveurs de ressources compte.

Délai mesuré

Le délai de retrait doit être mesuré. Il ne précise pas de propagation de révocation. Définissez un objectif de retrait puis observez les refus sur tous les consommateurs. Une intention dans la documentation ne démontre pas le comportement d’un cache ou d’un worker encore actif.

Erreur fréquente à comprendre

Le mot stateless définit un retrait immédiat.

Il ne précise pas de propagation de révocation.

Liste de retrait

Une liste de retrait ajoute un état à consulter. La cohérence entre consommateurs demande une conception. Une denylist ajoute une consultation d’état et un besoin de disponibilité. Définissez index, expiration des entrées et politique de panne ; cette solution modifie le caractère purement autonome de la validation.

Erreur fréquente à comprendre

Une liste locale connue d’une instance est globale par nature.

La cohérence entre consommateurs demande une conception.

Durées courtes

Des durées courtes peuvent réduire une fenêtre. Le risque accepté et les exigences peuvent imposer davantage. Réduire la durée d’un access token peut limiter l’exposition après vol. Évaluez aussi fréquence de renouvellement, charge et expérience utilisateur ; une durée courte ne rend pas une révocation instantanée.

Erreur fréquente à comprendre

Une expiration courte remplace toujours tout besoin de retrait urgent.

Le risque accepté et les exigences peuvent imposer davantage.

Clé compromise

Une clé compromise peut concerner plusieurs sessions. La capacité d’émission peut être plus large. Le retrait d’une clé peut toucher de nombreux tokens et utilisateurs. La procédure doit distinguer session isolée et incident global, avec moyen de distribution rapide et résultat de refus vérifiable.

Erreur fréquente à comprendre

Une compromission de clé est toujours limitée à un utilisateur.

La capacité d’émission peut être plus large.

Caches

Les caches doivent entrer dans la mesure de propagation. Il peut conserver des décisions ou états anciens. Incluez caches de clés, état de compte et listes de retrait dans la chronologie. Un cache trop long peut dépasser le délai annoncé même si la base centrale a déjà enregistré la révocation.

Erreur fréquente à comprendre

Un cache n’influence jamais le délai de refus.

Il peut conserver des décisions ou états anciens.

Horloge de test

Une horloge de test aide à vérifier le retrait. Le laboratoire peut contrôler le temps sans affecter le service réel. Avec une horloge contrôlée, vérifiez avant et après exp et autour du retrait. Évitez les sleeps ; ils rendent la suite lente et peuvent cacher une interprétation imprécise des bornes.

Erreur fréquente à comprendre

Changer arbitrairement l’heure de production est le test recommandé.

Le laboratoire peut contrôler le temps sans affecter le service réel.

État du compte

Une désactivation métier peut demander un contrôle d’état. Les états métier et temporels du token sont distincts. Une suspension de compte peut exiger une consultation ou une version de sécurité contrôlée. Écrivez explicitement si le retrait est immédiat ou différé, puis vérifiez le mécanisme choisi.

Erreur fréquente à comprendre

Un exp futur garantit que le compte est encore actif.

Les états métier et temporels du token sont distincts.

Diagnostic expurgé

Les traces d’incident doivent rester expurgées. Des identifiants et catégories contrôlés peuvent suffire. Conservez catégorie d’incident, identifiant non sensible et version du mécanisme. Le token brut dans les logs créerait une nouvelle copie exploitable au moment même où vous essayez de retirer l’accès.

Erreur fréquente à comprendre

La révocation nécessite de publier chaque bearer token.

Des identifiants et catégories contrôlés peuvent suffire.

Atelier guidé : lire, expliquer et vérifier le code

token:
  exp: 2000
validator_clock: 1500
logout_in_browser: true
validator_checks_revocation: false
signature_and_profile: valid

L’horloge du validateur est antérieure à exp et aucun état de retrait n’est consulté. Le logout local ne change donc pas la décision décrite. Ajoutez une politique serveur si un refus avant exp est exigé, puis mesurez ce refus avec une copie conservée du token.

1500 est inférieur à 2000 dans cet exercice temporel. Le stockage navigateur ne change pas une signature émise. Aucun mécanisme de propagation n’est défini. Le validateur décrit ne consulte aucun état de retrait.

Travail pratique : Désactivez un compte de test pendant qu’un token est encore dans sa période nominale.

Critères de correction : Mesurez les refus sur chaque instance, puis comparez avec le délai annoncé. Documentez séparément ce qui est retiré au logout et ce qui demeure utilisable ailleurs.

Exemple commenté

t0 : jeton émis
t1 : compte désactivé
t2 : dernier instant d’acceptation mesuré selon politique

L’intervalle t1–t2 est un résultat de conception à faire accepter selon le risque.

Exercice de mise en pratique

Désactivez un compte de test pendant qu’un token est encore dans sa période nominale.

Voir une proposition de correction

Mesurez les refus sur chaque instance, puis comparez avec le délai annoncé. Documentez séparément ce qui est retiré au logout et ce qui demeure utilisable ailleurs.

Points de vérification

  • Délai de retrait mesuré.
  • Logout distinct de révocation globale.
  • Caches et instances testés.

Contrôle de connaissances

Cours associé : 10. Expiration, révocation et incident ↗
Un logout local invalide-t-il nécessairement toutes les copies du token ?

Documentation de référence ↗

Validation du module

101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.

Commencer ou reprendre les 101 questions →