đ Module 3 â Le flux d'authentification complet
Bonne lecture et bon apprentissage ! Junior TSAFACK â 12/09/2026 â±ïž Temps de lecture estimĂ© : 5 minutes
Maintenant que vous savez ce que contient un JWT (Module 2), voyons son cycle de vie complet â depuis le login jusquâĂ la derniĂšre requĂȘte de la journĂ©e.
Ătape 1 â Le login đ
Section titled âĂtape 1 â Le login đâââââââââââââ âââââââââââââ Client â ââââ POST /login (email+mdp) âââș â Serveur âââââââââââââ ââââââââââââ â VĂ©rifie le mot de passe (hash + comparaison) â GĂ©nĂšre un JWT signĂ©, contenant sub, role, exp âââââââââââââ âŒâ Client â âââââââââ { "token": "eyJhbG..." } ââââââââââââââââLe serveur ne stocke rien. Contrairement Ă une session classique, aucune ligne nâest créée dans une table sessions : toute lâinformation nĂ©cessaire est dans le token lui-mĂȘme, scellĂ©e par la signature.
Ătape 2 â Le client garde le token đŸ
Section titled âĂtape 2 â Le client garde le token đŸâLe client (une application web, mobile, ou un autre service) conserve ce token quelque part â nous verrons au Module 5 que oĂč on le stocke a dâĂ©normes consĂ©quences de sĂ©curitĂ©.
Ătape 3 â Chaque requĂȘte lâaccompagne đš
Section titled âĂtape 3 â Chaque requĂȘte lâaccompagne đšâââââââââââââ GET /api/factures âââââââââââââ Client â Authorization: Bearer eyJhbG... âââșâ Serveur âââââââââââââ ââââââââââââ â 1. Decoupe header.payload.signature 2. Recalcule la signature avec sa cle 3. Compare : identique ? 4. Verifie exp (pas expire ?) 5. Lit "sub" et "role" -> autorise ou non âââââââââââââ âŒâ Client â âââââââââââââââââ 200 OK { factures } âââââââââââââââââââââââââââLe point essentiel : aucun aller-retour vers une base de donnĂ©es ou un service tiers nâest nĂ©cessaire pour valider lâidentitĂ©. Câest une opĂ©ration purement locale et rapide (quelques microsecondes de calcul cryptographique), ce qui est tout lâintĂ©rĂȘt des JWT dans une architecture distribuĂ©e avec plusieurs services.
Session classique : Client -> Serveur A -> [va interroger la base/le service d'auth] -> reponseJWT : Client -> Serveur A -> [verifie localement, sans reseau] -> reponseĂtape 4 â Lâexpiration et le refresh đ
Section titled âĂtape 4 â Lâexpiration et le refresh đâUn JWT porte presque toujours un claim exp (voir Module 2) : passĂ© ce dĂ©lai, il est automatiquement rejetĂ© (nous le vĂ©rifierons pour de vrai au Module 4). Comme on ne peut pas « rĂ©voquer » un JWT dĂ©jĂ Ă©mis (il reste valide jusquâĂ son expiration, quoi quâil arrive â voir Module 5), la pratique courante est de garder sa durĂ©e de vie courte (minutes) et dâutiliser un second jeton, le refresh token, pour en obtenir un nouveau sans redemander le mot de passe :
ââââââââââââ access_token expire ! âââââââââââââ Client â POST /refresh { refresh_token } âââșâ Serveur âââââââââââââ ââââââââââââ â Verifie le refresh_token (souvent stocke en base, lui, revocable) âââââââââââââ âŒâ Client â âââââââ nouveau access_token (JWT frais) ââââââââââââââââââââââââLe refresh token, lui, est gĂ©nĂ©ralement une simple chaĂźne alĂ©atoire stockĂ©e cĂŽtĂ© serveur (donc rĂ©vocable Ă tout moment) â câest le compromis classique entre la rapiditĂ© des JWT et le besoin de pouvoir couper lâaccĂšs dâun utilisateur immĂ©diatement.
đ§ Ă retenir
Section titled âđ§ Ă retenirâ- Le JWT est Ă©mis une fois au login, puis voyage dans lâen-tĂȘte
Authorization: Bearer ...de chaque requĂȘte. - La vĂ©rification est locale, sans base de donnĂ©es â câest la raison dâĂȘtre du format.
- Un JWT ne se « déconnecte » pas vraiment avant son expiration : le couple access token court + refresh token révocable est le compromis standard.
Prochaine étape
Section titled âProchaine Ă©tapeâAssez de thĂ©orie â place Ă la pratique : au Module 4, nous allons signer, vĂ©rifier, casser et forger de vrais tokens en Python.