Un JWT (JSON Web Token, prononcé « jot ») est un format standard (RFC 7519) de jeton compact et signé permettant de transmettre des informations entre deux parties de façon vérifiable. Il est omniprésent dans OAuth 2.0 et OpenID Connect.
Un JWT se compose de trois parties encodées en Base64URL et séparées par des points : header.payload.signature.
| Partie | Contenu |
|---|---|
| Header | Algorithme de signature (ex. RS256) et type |
| Payload | Les claims : sub, exp, iss, rôles… |
| Signature | Garantit l'intégrité et l'authenticité du jeton |
Exemple de structure :
eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxMjMiLCJleHAiOjE3MzU2ODk2MDB9.SflKxw...
└──── header ────┘ └──────── payload ────────┘ └─ signature ─┘
Vérification côté serveur (Node.js) :
import jwt from 'jsonwebtoken';
const payload = jwt.verify(token, publicKey, {
algorithms: ['RS256'],
issuer: 'https://login.microsoftonline.com/{tenant}/v2.0'
});
// payload.sub, payload.email, payload.exp...
À retenir
Le payload d'un JWT est signé mais pas chiffré : son contenu est lisible par quiconque (décodable sur jwt.io). N'y placez jamais de données sensibles. Vérifiez toujours la signature, l'émetteur (iss) et l'expiration (exp) côté serveur — un JWT non vérifié n'apporte aucune sécurité.
Termes connexes : OAuth 2.0, OpenID Connect, authentification.
