Accueil/Technologies/Comprendre le JWT : le guide complet de l'authentification moderne
Technologies

Comprendre le JWT : le guide complet de l'authentification moderne

Découvrez ce qu'est un jeton JWT (JSON Web Token), comment il fonctionne, ses avantages pour l'autorisation sans session, et ses différences avec les sessions classiques. Apprenez à utiliser access token et refresh token pour sécuriser vos applications web, mobiles ou API tout en assurant scalabilité et performance.

10 avr. 2026
11 min
Comprendre le JWT : le guide complet de l'authentification moderne

Le jeton JWT est l'une des méthodes d'autorisation les plus populaires dans les applications web modernes. Utilisé dans les API, les applications mobiles et les services à architecture microservices, il permet d'éviter le stockage des sessions cÎté serveur.

Alors qu'auparavant, le serveur devait mĂ©moriser chaque utilisateur via des sessions, avec JWT tout fonctionne diffĂ©remment : toutes les informations sont transmises avec chaque requĂȘte. Ce systĂšme est plus rapide, plus simple Ă  mettre Ă  l'Ă©chelle et mieux adaptĂ© aux services distribuĂ©s.

Dans cet article, nous allons découvrir ce qu'est un jeton JWT, comment il fonctionne, sa structure et ses différences avec les sessions classiques.

Qu'est-ce qu'un jeton JWT ? Explications simples

Un jeton JWT est une chaßne de caractÚres spéciale qui contient des informations sur l'utilisateur et permet de l'identifier sans devoir stocker de données cÎté serveur. JWT signifie JSON Web Token.

En d'autres termes, il s'agit d'un "passeport numĂ©rique" obtenu aprĂšs connexion. Au lieu de vĂ©rifier l'utilisateur Ă  chaque fois via la base de donnĂ©es, le serveur lit ce jeton et sait immĂ©diatement qui vous ĂȘtes et ce que vous pouvez faire.

Le JWT est largement utilisé dans les applications web et mobiles, ainsi que dans les API. Par exemple :

  • lors de la connexion Ă  un site
  • lors de l'authentification via une application
  • lors de l'utilisation d'une API REST

L'idĂ©e principale du JWT : toutes les informations sont stockĂ©es dans le jeton lui-mĂȘme, pas sur le serveur. Cela rend le systĂšme plus rapide et plus facile Ă  mettre Ă  l'Ă©chelle.

Le jeton ressemble généralement à une longue chaßne séparée par des points, par exemple :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

MĂȘme s'il ressemble Ă  une suite de caractĂšres alĂ©atoires, il contient en rĂ©alité :

  • des informations sur l'utilisateur (ID, rĂŽle)
  • une date d'expiration
  • une signature protĂ©geant les donnĂ©es contre la falsification

Important : JWT ne chiffre pas les donnĂ©es, il les encode seulement. Cela signifie que le contenu peut ĂȘtre dĂ©codĂ© mais qu'il ne peut pas ĂȘtre modifiĂ© sans invalider la signature.

Le succÚs du JWT vient du fait qu'il permet l'autorisation sans session. Le serveur n'a pas besoin de stocker l'état utilisateur : toutes les données sont déjà dans le jeton.

Comment fonctionne un jeton JWT ?

Le fonctionnement du JWT repose sur une idĂ©e simple : le serveur dĂ©livre un jeton une fois, puis se contente de le vĂ©rifier Ă  chaque requĂȘte, sans mĂ©moriser l'Ă©tat de l'utilisateur.

Étapes du processus

  1. L'utilisateur saisit son identifiant et son mot de passe. Ces informations sont envoyées au serveur, qui les vérifie, par exemple via la base de données.
  2. Si les informations sont correctes, le serveur crée un jeton JWT contenant :
    • l'ID de l'utilisateur
    • le rĂŽle (ex : user ou admin)
    • la date d'expiration
  3. Le jeton est envoyé au client : navigateur ou application mobile.
  4. Le stockage du jeton cÎté client peut se faire :
    • dans le localStorage
    • dans le sessionStorage
    • dans un cookie (souvent HttpOnly pour plus de sĂ©curitĂ©)
  5. À chaque requĂȘte ultĂ©rieure, le jeton est envoyĂ© au serveur, gĂ©nĂ©ralement dans l'en-tĂȘte :
    Authorization: Bearer <jeton>
  6. Le serveur :
    1. extrait le jeton
    2. vérifie la signature
    3. vérifie la date d'expiration
    4. extrait les données du payload
    Si tout est valide, l'utilisateur est authentifiĂ© et la requĂȘte est exĂ©cutĂ©e.

À retenir : le serveur ne conserve aucune information sur l'utilisateur entre les requĂȘtes. Tout ce dont il a besoin est dĂ©jĂ  dans le jeton. C'est pourquoi le JWT est qualifiĂ© de stateless (sans Ă©tat).

Ce mécanisme est particuliÚrement pratique pour :

  • les API
  • les microservices
  • les systĂšmes distribuĂ©s

Le JWT est souvent utilisé en association avec OAuth : découvrez les détails dans l'article Comment fonctionne OAuth 2.0 : connexion sans mot de passe et sécurité de vos données.

Structure d'un jeton JWT

Un jeton JWT est constitué de trois parties séparées par des points : header.payload.signature

Chacune de ces parties est encodée en Base64, ce qui donne l'aspect d'une chaßne illisible mais qui possÚde une structure lisible à l'intérieur.

1. Header (en-tĂȘte)

Contient des informations sur le type de jeton et l'algorithme de signature.

{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg : l'algorithme de signature (ex : HMAC SHA-256)
  • typ : le type de jeton

2. Payload (données)

Partie principale du jeton, elle stocke les informations utiles.

{
  "userId": 123,
  "role": "admin",
  "exp": 1712345678
}

On y retrouve :

  • les donnĂ©es utilisateur
  • les droits d'accĂšs
  • la date d'expiration (exp)
  • la date de crĂ©ation (iat)

Attention : le payload n'est pas chiffré, il est simplement encodé. N'importe qui peut donc le lire.

3. Signature

La partie la plus importante, elle protĂšge le jeton contre la falsification.

La signature est générée à partir :

  • de l'en-tĂȘte
  • du payload
  • d'une clĂ© secrĂšte (cĂŽtĂ© serveur)

Si quelqu'un tente de modifier les donnĂ©es du jeton, la signature ne correspondra plus et le serveur rejettera la requĂȘte.

En résumé, un JWT est bien plus qu'une simple chaßne : c'est un conteneur autonome contenant à la fois les données et leur protection. Le serveur n'a pas besoin d'interroger la base de données pour savoir qui se connecte : tout est déjà dans le jeton.

JWT : autorisation et authentification, quelle différence ?

Dans l'utilisation du JWT, deux notions sont souvent confondues : authentification et autorisation. Elles sont liées, mais distinctes.

Authentification

C'est le processus de vérification de l'identité de l'utilisateur. La question à laquelle répond le systÚme : qui es-tu ?

Exemple :

  • l'utilisateur saisit ses identifiants
  • le serveur vĂ©rifie les donnĂ©es
  • si tout est correct, l'utilisateur est authentifiĂ©

C'est à ce stade que le jeton JWT est généralement créé.

Autorisation

Il s'agit de l'étape suivante : qu'as-tu le droit de faire ?

Par exemple :

  • l'utilisateur ordinaire peut lire des donnĂ©es
  • l'administrateur peut les modifier

Ces informations sont généralement stockées dans le payload du JWT (souvent dans le champ role).

Comment le JWT intervient-il dans ces processus ?

  1. L'utilisateur s'authentifie (connexion)
  2. Le serveur délivre un jeton JWT
  3. Le jeton contient déjà les droits d'accÚs
  4. À chaque requĂȘte, le serveur autorise ou non, en lisant les donnĂ©es du jeton

Autrement dit, le JWT réunit les deux processus :

  • il confirme l'identitĂ©
  • il stocke les droits d'accĂšs

À noter : le JWT ne rĂ©alise pas l'authentification lui-mĂȘme, il ne fait que stocker le rĂ©sultat de la vĂ©rification utilisateur.

JWT vs sessions : quelles différences ?

Pour comprendre l'intĂ©rĂȘt du JWT, il est utile de le comparer Ă  l'approche traditionnelle des sessions.

Fonctionnement des sessions

AprÚs la connexion de l'utilisateur, le serveur :

  • crĂ©e un enregistrement en mĂ©moire ou en base de donnĂ©es
  • attribue un session ID
  • envoie cet ID via un cookie

À chaque requĂȘte :

  • le navigateur envoie le session ID
  • le serveur cherche les donnĂ©es associĂ©es
  • il sait qui est l'utilisateur

Le serveur conserve donc l'état utilisateur.

Fonctionnement du JWT

Au lieu de conserver des données cÎté serveur :

  • le serveur crĂ©e un jeton avec les informations
  • l'envoie au client
  • le client stocke le jeton
  • Ă  chaque requĂȘte, il renvoie le jeton

Le serveur ne cherche rien en base : il vérifie simplement le jeton.

Différences clés

  1. Stockage des données
    • Sessions : sur le serveur
    • JWT : dans le jeton
  2. Scalabilité
    • Sessions : plus complexe (stockage partagĂ© nĂ©cessaire)
    • JWT : plus simple (les serveurs sont indĂ©pendants)
  3. Performance
    • Sessions : accĂšs Ă  la base ou la mĂ©moire Ă  chaque requĂȘte
    • JWT : vĂ©rification de la signature sans requĂȘte externe
  4. Sécurité
    • Sessions : rĂ©vocation facile cĂŽtĂ© serveur
    • JWT : plus difficile Ă  rĂ©voquer (une fois Ă©mis)

Quand privilégier le JWT ?

  • API et microservices
  • Applications mobiles
  • SystĂšmes distribuĂ©s
  • Autorisation via des services tiers

Quand privilégier les sessions ?

  • Sites simples
  • Rendu cĂŽtĂ© serveur (SSR)
  • Lorsque la gestion stricte des sessions est nĂ©cessaire
  • Lorsque la rĂ©vocation rapide de l'accĂšs est importante

En résumé : le JWT offre flexibilité et scalabilité, tandis que les sessions privilégient le contrÎle et la simplicité de gestion.

Access Token et Refresh Token : comment fonctionne le duo ?

Dans la pratique, le JWT n'est presque jamais utilisé seul. On l'associe à un access token et un refresh token pour allier sécurité et confort.

Access Token

Le jeton d'accĂšs est le jeton principal utilisĂ© lors des requĂȘtes. CaractĂ©ristiques :

  • courte durĂ©e de vie (5 Ă  30 minutes)
  • envoyĂ© Ă  chaque requĂȘte
  • contient les donnĂ©es utilisateur

En cas de vol, l'agresseur n'aura accÚs que pour une période limitée.

Refresh Token

Le refresh token est un jeton secondaire servant à régénérer l'access token. Caractéristiques :

  • durĂ©e de vie plus longue (jours ou semaines)
  • non utilisĂ© dans les requĂȘtes courantes
  • stockĂ© de façon plus sĂ©curisĂ©e (souvent dans un cookie HttpOnly)

Comment cela fonctionne-t-il ensemble ?

  1. L'utilisateur se connecte
  2. Le serveur délivre :
    • un access token
    • un refresh token
  3. L'utilisateur effectue ses requĂȘtes avec l'access token
  4. Lorsque l'access token expire :
    • le client envoie le refresh token au serveur
    • le serveur le vĂ©rifie
    • Ă©met un nouvel access token
  5. L'utilisateur continue sans devoir se reconnecter

Pourquoi ne pas utiliser un seul JWT ?

  • Un jeton longue durĂ©e est pratique, mais dangereux en cas de fuite
  • Un jeton court est plus sĂ»r, mais risque de dĂ©connecter trop souvent

Le combo access + refresh résout ce problÚme : sécurité et confort réunis.

Point sécurité :

  • Le refresh token est souvent stockĂ© dans un cookie HttpOnly
  • Non accessible en JavaScript
  • ProtĂ©gĂ© contre les attaques XSS

Cette approche est la norme dans la plupart des systĂšmes d'authentification modernes.

Sécurité des jetons JWT

Le JWT est considĂ©rĂ© comme sĂ©curisĂ©, Ă  condition d'ĂȘtre bien implĂ©mentĂ©. Des erreurs courantes peuvent conduire Ă  de sĂ©rieuses failles.

Pourquoi un JWT ne peut-il pas ĂȘtre falsifié ?

La principale protection du JWT est sa signature.

  • Le serveur signe le jeton avec une clĂ© secrĂšte inconnue du client
  • À chaque requĂȘte, le serveur recalcule la signature et la compare

Si les données du jeton sont modifiées, la signature ne correspond plus et l'accÚs est refusé.

Principal risque : le vol du jeton

  • On ne peut deviner un JWT, mais on peut le voler
  • Un attaquant ayant le jeton peut :
    • faire des requĂȘtes Ă  la place de l'utilisateur
    • accĂ©der Ă  ses donnĂ©es
  • Le serveur ne peut pas distinguer l'attaquant de l'utilisateur lĂ©gitime

OĂč stocker un JWT en toute sĂ©curité ?

  1. localStorage
    • simple Ă  utiliser
    • vulnĂ©rable aux attaques XSS
  2. sessionStorage
    • lĂ©gĂšrement plus sĂ©curisĂ©
    • toujours accessible en JavaScript
  3. Cookie HttpOnly (meilleure option)
    • non accessible en JavaScript
    • protĂ©gĂ© contre le XSS
    • gĂ©rĂ© automatiquement par le navigateur

Erreurs fréquentes des débutants

  1. Durée de vie trop longue du jeton - risque accru
  2. Stockage de données sensibles dans le JWT :
    • mots de passe
    • donnĂ©es personnelles
    • informations confidentielles
  3. Absence de HTTPS - fuite quasi assurée du jeton
  4. Pas de mécanisme de révocation
    • PrĂ©fĂ©rer une courte durĂ©e de vie
    • Utiliser le refresh token

Bilan sécurité

  • Utilisez toujours HTTPS
  • Gardez une durĂ©e de vie courte pour les jetons
  • Associez access token et refresh token
  • Minimisez les donnĂ©es stockĂ©es dans le JWT

Quand utiliser un JWT ?

Le JWT est un outil puissant, mais il n'est pas adaptĂ© Ă  toutes les situations. Il est important d'identifier les cas oĂč il apporte une rĂ©elle valeur ajoutĂ©e.

Cas d'usage recommandés

  1. Applications SPA (Single Page Application)
    • Front-end et back-end sĂ©parĂ©s
    • De nombreuses requĂȘtes API
    • Pas de sessions traditionnelles
    • Avantages : pas besoin de stocker l'Ă©tat, transmission simple Ă  chaque requĂȘte
  2. Applications mobiles (iOS/Android)
    • Pas de cookies standards
    • Besoin d'un mĂ©canisme d'authentification simple
    • Avantages : stockĂ© sur l'appareil, envoyĂ© Ă  chaque requĂȘte
  3. API et microservices
    • SystĂšmes distribuĂ©s, nombreux services
    • Pas de serveur de sessions centralisĂ©
    • Avantages : pas de stockage d'Ă©tat, vĂ©rification facile sur chaque service
  4. Autorisation via des services tiers
    • Connexion via Google, rĂ©seaux sociaux...
    • Le JWT fonctionne trĂšs bien avec OAuth : plus de dĂ©tails ici.

Quand éviter le JWT ?

  1. Sites simples
    • Petit projet
    • Rendu cĂŽtĂ© serveur (SSR)
    • Sessions plus simples et plus sĂ»res
  2. Révocation rapide de l'accÚs
    • Impossible d'invalider facilement un JWT
    • Sessions recommandĂ©es si besoin de contrĂŽle immĂ©diat
  3. Exigences de sécurité élevées
    • Bancaire, services d'entreprise
    • Besoin d'un contrĂŽle total sur chaque session
    • Le JWT peut manquer de flexibilitĂ©

À retenir

Le JWT est conçu pour les architectures :

  • scalables
  • API et applications front-end
  • systĂšmes distribuĂ©s

Mais il n'est pas une solution universelle.

Conclusion

Le jeton JWT est une méthode d'autorisation moderne qui permet de se passer du stockage de sessions cÎté serveur. Il contient toutes les informations nécessaires et la signature garantit son intégrité, ce qui rend le systÚme à la fois rapide et évolutif.

Nous avons vu :

  • ce qu'est un jeton JWT et sa structure
  • comment fonctionne l'autorisation sans session
  • les diffĂ©rences avec les sessions classiques
  • le rĂŽle des access et refresh tokens
  • les risques Ă  Ă©viter

En pratique, le JWT est idéal pour les API, les applications mobiles et les microservices, mais peut s'avérer excessif pour les projets simples.

Pour résumer : le JWT rime avec commodité et évolutivité, les sessions avec contrÎle et simplicité. Le choix dépend de vos objectifs, de votre architecture et de vos exigences de sécurité.

Tags:

jwt
authentification
autorisation
api
sécurité
access-token
refresh-token
microservices

Articles Similaires

Chargement...
JWT : Guide complet de l'authentification et sécurité moderne