Blog

Qu'est-ce que le JWT et comment fonctionne-t-il ? Guide complet pour débutants

Découvrez ce qu'est un JWT (JSON Web Token), comment il fonctionne, de quoi il est composé et pourquoi il est utilisé pour l'authentification dans les applications web modernes.

Illustration montrant la structure d'un JWT avec Header, Payload et Signature.

Qu'est-ce que le JWT et comment fonctionne-t-il ?

Si vous développez des applications web modernes, vous avez certainement déjà rencontré le terme JWT ou JSON Web Token. JWT est l'une des méthodes les plus utilisées pour transmettre des informations de manière sécurisée entre un client et un serveur. Il est largement employé pour l'authentification, l'autorisation et la protection des API.

Dans ce guide, vous découvrirez ce qu'est un JWT, comment il fonctionne, comment il est structuré et pourquoi il est devenu une technologie essentielle du développement web moderne.


Qu'est-ce qu'un JWT ?

JWT (JSON Web Token) est un standard ouvert (RFC 7519) permettant de transmettre des informations de manière sécurisée sous la forme d'un objet JSON compact.

Chaque JWT est signé numériquement afin de garantir que son contenu n'a pas été modifié.

Contrairement aux sessions classiques, JWT stocke les informations d'authentification directement dans le jeton plutôt que sur le serveur.


Structure d'un JWT

Un JWT est composé de trois parties séparées par des points.

xxxxx.yyyyy.zzzzz

1. Header

Le Header contient les informations concernant le type de jeton et l'algorithme de signature.

Exemple :

{
"alg": "HS256",
"typ": "JWT"
}

Le Header est ensuite encodé au format Base64Url.


2. Payload

Le Payload contient les informations de l'utilisateur (claims).

Exemple :

{
"userId": 15,
"email": "john@example.com",
"role": "admin"
}

Il peut contenir :

  • l'identifiant utilisateur ;
  • le nom ;
  • l'adresse e-mail ;
  • le rôle ;
  • les autorisations ;
  • la date d'expiration.

Le Payload n'est pas chiffré. Son contenu peut être décodé par toute personne possédant le jeton.


3. Signature

La Signature garantit que le jeton n'a pas été modifié.

Elle est générée avec :

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)

La clé secrète est connue uniquement du serveur.


Comment fonctionne JWT ?

Le processus classique est le suivant :

  1. L'utilisateur se connecte.
  2. Le serveur vérifie les identifiants.
  3. Le serveur génère un JWT.
  4. Le jeton est envoyé au client.
  5. Le client stocke le JWT.
  6. À chaque requête, le client renvoie le jeton.
  7. Le serveur vérifie la signature.
  8. Si elle est valide, l'accès est autorisé.

Cette approche évite de stocker des sessions sur le serveur.


Où utilise-t-on JWT ?

JWT est largement utilisé dans :

  • l'authentification des utilisateurs ;
  • les API REST ;
  • les applications React, Vue et Angular ;
  • les applications mobiles ;
  • OAuth 2.0 ;
  • les architectures en microservices ;
  • les API Gateway.

Les avantages de JWT

JWT présente plusieurs avantages :

  • authentification Stateless ;
  • format compact ;
  • vérification rapide ;
  • fonctionnement entre plusieurs services ;
  • idéal pour les applications mobiles ;
  • excellente évolutivité.

JWT ou Sessions ?

JWT Sessions
Stocké côté client Stockées côté serveur
Stateless Stateful
Idéal pour les API Idéal pour les sites web classiques
Facile à mettre à l'échelle Nécessite un stockage des sessions

Les deux solutions restent pertinentes selon l'architecture du projet.


JWT est-il sécurisé ?

Oui, à condition d'être correctement implémenté.

Bonnes pratiques :

  • utiliser HTTPS ;
  • définir une date d'expiration ;
  • ne jamais stocker de données sensibles dans le Payload ;
  • utiliser un algorithme de signature sécurisé ;
  • renouveler régulièrement les clés secrètes ;
  • vérifier systématiquement la signature.

Les erreurs les plus fréquentes

Les développeurs débutants commettent souvent les erreurs suivantes :

  • stocker des mots de passe dans le JWT ;
  • oublier la date d'expiration ;
  • ne pas vérifier la signature ;
  • utiliser une clé secrète faible ;
  • transmettre les jetons via HTTP.

Exemple de JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VySWQiOjE1LCJyb2xlIjoiYWRtaW4ifQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Même si cette chaîne semble aléatoire, elle est composée du Header, du Payload et de la Signature.


Conclusion

JWT est aujourd'hui l'une des technologies d'authentification les plus populaires. Il permet de transmettre des informations de manière sécurisée entre un client et un serveur sans stocker de sessions.

Si vous développez des API, des applications SPA ou des applications mobiles, comprendre le fonctionnement de JWT est une compétence indispensable. Utilisé avec HTTPS et une validation correcte, JWT constitue une solution rapide, sécurisée et évolutive.