Mode d’emploi
- 1Collez le jeton dans le champ, avec ou sans le préfixe « Bearer ». L’en-tête et la charge utile sont décodés pendant la saisie.
- 2Regardez la ligne de statut : elle indique si le jeton est valide, expiré ou pas encore valide, d’après ses claims
expetnbf. - 3Lisez les claims standard – émetteur, sujet, audience et dates –, avec les timestamps convertis en dates dans votre fuseau horaire.
- 4Pour vérifier la signature, saisissez le secret partagé pour les jetons
HS256, ou collez la clé publique ou le jeu de clés JWK pourRS256,ES256et les autres algorithmes à paire de clés.
Que contient un JWT ?
Un JSON Web Token se compose de trois parties encodées en Base64URL et reliées par des points : header.payload.signature. L’en-tête (header) indique comment le jeton est signé, par exemple {"alg":"HS256","typ":"JWT"}. La charge utile (payload) contient les claims (revendications) : des affirmations sur l’utilisateur et sur le jeton, comme un identifiant d’utilisateur, des rôles et une date d’expiration. La signature prouve que les deux premières parties proviennent du détenteur de la clé et n’ont pas été modifiées.
Base64URL est un encodage, pas un chiffrement : quiconque possède le jeton peut lire sa charge utile, exactement comme le fait cet outil. Ne mettez jamais de mots de passe ni d’autres secrets dans un JWT. Si le contenu doit rester confidentiel, l’émetteur doit utiliser un jeton chiffré (JWE), qui comporte cinq parties et ne peut être lu qu’avec la bonne clé.
Claims standard et expiration
La RFC 7519 définit sept claims enregistrés. iss (issuer, l’émetteur) désigne qui a créé le jeton, sub (subject, le sujet) la personne qu’il concerne – généralement un identifiant d’utilisateur – et aud (audience) le service auquel il est destiné. exp (expiration time), nbf (not before) et iat (issued at) sont des timestamps en secondes depuis le 1er janvier 1970, et jti est un identifiant unique qui permet à un serveur de repérer un jeton réutilisé.
Un serveur doit refuser un jeton après sa date exp et avant sa date nbf. Les durées de vie courtes – souvent de 5 à 60 minutes pour les jetons d’accès – limitent les dégâts en cas de vol d’un jeton ; c’est pourquoi les applications utilisent des jetons de rafraîchissement (refresh tokens) pour en obtenir de nouveaux.
Vérifier la signature
Le décodage montre ce qu’affirme un jeton ; seule la signature vous dit si vous pouvez le croire. HS256, HS384 et HS512 utilisent un secret partagé, connu à la fois de l’émetteur et du serveur. RS256, PS256, ES256, EdDSA et les algorithmes similaires utilisent une paire de clés : l’émetteur signe avec sa clé privée et n’importe qui peut vérifier avec la clé publique. Les fournisseurs d’identité publient leurs clés publiques sous forme de jeu de clés JWK, souvent à une URL se terminant par /.well-known/jwks.json.
La vérification s’effectue localement avec l’API Web Crypto de votre navigateur, et rien de ce que vous collez n’est envoyé nulle part. Manipulez tout de même les secrets de production avec prudence, et n’oubliez pas qu’une clé privée n’est jamais nécessaire pour vérifier un jeton : ne collez que des clés publiques.
Questions fréquentes
Puis-je coller un JWT ici en toute sécurité ?
Oui. Le jeton est décodé et vérifié dans votre navigateur, et il n’est jamais envoyé à nestoo ni à personne d’autre. Gardez à l’esprit qu’un jeton d’accès valide fonctionne comme un mot de passe temporaire : quiconque le copie peut s’en servir jusqu’à son expiration. Ne partagez donc pas de jetons actifs dans des messageries ou des tickets.
Peut-on décoder un JWT sans le secret ?
Oui. L’en-tête et la charge utile sont seulement encodés en Base64URL : n’importe qui peut les lire sans clé. Il faut un secret ou une clé privée pour créer une signature valide, et le secret ou la clé publique pour la vérifier.
Pourquoi mon jeton affiche-t-il « Signature invalide » ?
Le plus souvent, le secret ou la clé est incorrect : une clé d’un autre environnement, un secret qui doit d’abord être décodé du Base64, ou une clé publique avec un autre kid. Cela arrive aussi quand le jeton a été modifié ou tronqué lors du copier-coller. Pour les jetons d’un fournisseur d’identité, utilisez le jeu de clés JWK actuel du fournisseur.
Quelle est la différence entre JWS et JWE ?
Un JWS est un jeton signé en trois parties : tout le monde peut le lire, mais personne ne peut le modifier sans invalider la signature. Un JWE est un jeton chiffré en cinq parties, dont seul le détenteur de la clé de déchiffrement peut lire le contenu. La plupart des jetons que l’on appelle JWT sont des JWS.
Que signifient exp, iat et nbf ?
Ce sont des dates exprimées en secondes depuis le 1er janvier 1970, ce qu’on appelle le temps Unix. exp indique quand le jeton expire, iat quand il a été émis, et nbf le moment avant lequel il ne doit pas être accepté. Cet outil les affiche sous forme de dates dans votre fuseau horaire, avec le temps écoulé ou restant.