Les trois parties d’un JWT
Un JWT est une chaîne en trois parties séparées par des points : en-tête, contenu et signature. L’en-tête indique l’algorithme (par exemple HS256 ou RS256) et le type. Le contenu porte les données, appelées claims, comme l’identifiant de l’utilisateur, l’émetteur ou les dates.
Les deux premières parties sont du JSON encodé en Base64URL. Elles ne sont pas chiffrées : toute personne ayant le jeton peut les lire. C’est pourquoi elles ne doivent pas inclure de mots de passe ni de données que vous ne voulez pas exposer.
Dates et état
Les claims iat, exp et nbf sont des dates en secondes depuis 1970 (temps Unix). Snipshed les affiche sous forme lisible en UTC et compare l’expiration à l’horloge de votre appareil pour indiquer si le jeton est dans sa période de validité, expiré ou pas encore valide.
Si l’horloge de votre ordinateur est décalée, l’état peut être faux. Un jeton sans exp n’expire jamais, ce qui mérite d’être revu dans une conception de sécurité.
Décoder n’est pas valider
La signature garantit que le contenu n’a pas été modifié et qu’il a été émis par le détenteur de la clé. La vérifier exige cette clé et doit se faire sur le serveur qui reçoit le jeton. Un jeton à signature altérée se décode quand même.
Utilisez l’outil pour déboguer une intégration, comprendre ce qu’un jeton déclare ou préparer un test. Ne l’utilisez pas pour décider si une requête est digne de confiance, et manipulez les jetons réels avec précaution : les coller sur un site externe peut donner accès à quelqu’un d’autre.
- Collez le jeton complet, avec ses trois parties.
- Décodez et examinez l’algorithme, l’émetteur et les données de l’utilisateur.
- Regardez les dates d’émission et d’expiration ainsi que l’état.
- Rappelez-vous que la signature n’est pas vérifiée ; validez-la sur votre serveur.
Critères pour l'examen et l'obtention du résultat
Si vous travaillez souvent avec des jetons, prenez l’habitude de vérifier trois choses : l’algorithme, l’expiration et l’audience. Un jeton à expiration très longue, ou sans expiration, augmente les dégâts en cas de fuite. Évitez de coller des jetons de production dans des outils externes et utilisez des jetons de test dans vos exemples. Si vous soupçonnez qu’un jeton a été exposé, révoquez-le dans le service qui l’a émis plutôt que d’attendre son expiration.
Lire un jeton d’exemple
Cliquez sur Essayer l’exemple puis sur Décoder le jeton. L’exemple est un jeton de test contenant un nom, une date d’émission et une expiration.
L’en-tête avec l’algorithme HS256, le contenu avec les données et les dates en UTC sont affichés, ainsi que l’état Expiré, car le jeton d’exemple a expiré en 2018.
Modifiez une lettre de la signature et décodez de nouveau : cela fonctionne toujours, ce qui montre que décoder ne valide pas. Modifiez une lettre du contenu et observez l’erreur ou le changement des données.