À retenir
- Composé de trois parties : l'en-tête, le contenu (payload) et la signature.
- La signature permet de vérifier que le jeton n'a pas été modifié.
- Il permet de créer des systèmes d'authentification « sans état » (stateless).
Le JWT est une sorte de badge d'identité numérique sécurisé qui permet à deux ordinateurs d'échanger des informations de manière fiable. Imaginez un pass pour un festival : une fois que l'entrée a vérifié votre identité, elle vous remet un bracelet (le JWT) qui prouve que vous avez le droit d'accéder aux différentes zones sans avoir à ressortir votre carte d'identité à chaque fois.
Étymologie
Acronyme de JSON Web Token. Il combine JSON (le format de données utilisé, léger et lisible), Web (son environnement principal) et Token (le mot anglais pour « jeton » ou « preuve d'accès »).
Exemples d'usage
- Une application mobile qui envoie un JWT à un serveur pour prouver que l'utilisateur est bien connecté.
- Le partage d'informations d'autorisation entre un service d'authentification (comme Google) et une application tierce.
Cas d'usage
On l'utilise principalement pour l'authentification (se connecter à un site) et l'échange d'informations sécurisées. Il est très populaire dans les architectures modernes (API, microservices) car le serveur n'a pas besoin de stocker la session en mémoire, tout est écrit dans le jeton lui-même.
Bonnes pratiques
Il ne faut jamais placer de données sensibles (comme un mot de passe) à l'intérieur d'un JWT car le contenu est simplement encodé et peut être lu par n'importe qui. Il faut impérativement utiliser une connexion sécurisée (HTTPS) et définir une durée de validité courte pour limiter les risques en cas de vol du jeton.
Synonymes
Antonymes
Conseil
Pour bien comprendre comment ils fonctionnent, utilisez l'outil en ligne jwt.io. Vous pourrez y coller un jeton pour voir comment il est découpé et quelles informations il contient réellement.
Questions fréquentes
Le contenu d'un JWT est-il secret ?
Non, par défaut les données sont juste encodées en Base64. Tout le monde peut les lire. Seule la signature garantit qu'elles n'ont pas été falsifiées.
Où doit-on stocker un JWT dans le navigateur ?
C'est un grand débat, mais les stocker dans un cookie avec l'option 'HttpOnly' est souvent considéré comme plus sûr que le LocalStorage contre les attaques XSS.