Blog News Contact Demander une proposition

Décodeur JWT : décoder, vérifier et créer des JSON Web Tokens

Collez un jeton pour voir le header, le payload et les claims en clair, savoir s’il a expiré et vérifier sa signature. Le jeton, le secret et les clés ne quittent pas votre appareil.

Dans votre navigateur : jetons et clés ne quittent pas votre appareilGratuitSans inscription

Le jeton, le secret et les clés sont traités uniquement sur cette page : rien n’est envoyé, ajouté à l’URL ou transmis à l’analytique.

header · payload · signature

Vérifier la signature

Algorithme: —

Contrôles

    Header

    Payload

    Claims

    Vous construisez des API avec une authentification par jetons ?

    Nous concevons et développons des API, des flux OAuth 2.0 et OpenID Connect, et les testons contre les vulnérabilités. Parlez-nous de votre projet et recevez une estimation.

    En bref : collez un JSON Web Token ci-dessus. Le décodeur affiche le header et le payload en JSON formaté, explique les claims standard, indique si le jeton a expiré et vérifie la signature avec votre secret ou votre clé publique. L’onglet Encodeur crée des jetons HS256, HS384 et HS512 pour vos tests. Tout se passe dans le navigateur.

    Nous avons créé ce décodeur JWT pour notre propre travail sur les API et l’authentification chez YuSMP Group. Pour une équipe qui conçoit une authentification par jetons ou en teste la sécurité : développement d’API et tests d’intrusion et audits de sécurité.

    Qu’est-ce qu’un JWT ?

    Un JSON Web Token (RFC 7519) est une chaîne compacte de trois parties en Base64URL séparées par des points : header.payload.signature. Le header indique l’algorithme de signature (alg) et parfois l’identifiant de clé (kid). Le payload contient les claims : qui a émis le jeton, pour qui et quand il expire. La signature prouve que personne n’a modifié les deux premières parties. Le payload est encodé, pas chiffré : quiconque possède le jeton peut le lire.

    Comment décoder et vérifier un JWT

    1. Collez le jeton dans le champ « Jeton encodé ». Le préfixe Bearer et les retours à la ligne sont retirés automatiquement. Les trois parties sont colorées : header, payload, signature.
    2. Lisez le résultat. Le header et le payload s’affichent en JSON formaté. Le bloc Claims convertit exp, iat et nbf en dates UTC et dans votre fuseau, avec « expiré il y a 10 minutes » ou « expire dans 3 heures ».
    3. Consultez les alertes. L’outil signale alg: none, un jeton expiré ou pas encore valide, l’absence de exp, des dates en millisecondes et des champs qui ressemblent à des données personnelles.
    4. Vérifiez la signature. Pour HS256/384/512, saisissez le secret partagé en texte ou en Base64. Pour RS, PS, ES et EdDSA, collez la clé publique en PEM, un certificat X.509, un JWK ou un JWKS complet, ou chargez le JWKS par URL : la bonne clé est choisie par kid.

    Quels algorithmes sont pris en charge ?

    • HMAC — HS256, HS384, HS512 : secret partagé (texte ou Base64).
    • RSA — RS256, RS384, RS512, PS256, PS384, PS512 : clé publique RSA : PEM, PKCS#1, certificat, JWK.
    • ECDSA — ES256, ES384, ES512 : clé publique EC P-256, P-384 ou P-521.
    • EdDSA — Ed25519 : clé publique Ed25519, si votre navigateur la prend en charge.

    La vérification utilise l’API WebCrypto intégrée au navigateur. Nous l’avons comparée, pour chaque algorithme, aux exemples de la RFC 7515, aux jetons de jwt.io et à des jetons signés avec la bibliothèque Python cryptography.

    Erreurs fréquentes avec les JWT

    • Faire confiance au payload sans vérifier la signature. Décoder n’est pas valider : le serveur doit vérifier la signature, exp, iss et aud à chaque requête.
    • Accepter alg: none ou laisser le jeton choisir l’algorithme. Fixez l’algorithme attendu côté serveur.
    • Un secret HS trop court. La RFC 7518 exige une clé au moins aussi longue que le hachage : 32 octets pour HS256, 64 pour HS512. Un secret court se devine hors ligne.
    • Des données personnelles dans le payload. E-mail, téléphone ou adresse dans un JWT sont lisibles par quiconque voit le jeton, y compris les extensions de navigateur et les journaux.
    • Des millisecondes dans exp. Les dates JWT sont en secondes. Une valeur comme 1735689600000 correspond à l’an 56 971 : le jeton n’expire jamais.

    Questions fréquentes

    Puis-je coller ici un jeton de production en toute sécurité ?

    Le décodeur fonctionne entièrement dans le navigateur : le jeton, le secret et les clés ne partent vers aucun serveur, ni dans l’URL, ni dans l’analytique. Rien n’est enregistré sans la case « Mémoriser ». Traitez tout de même les vrais jetons comme des mots de passe et préférez des jetons expirés ou de test.

    Quelle différence entre décoder et vérifier un JWT ?

    Décoder lit seulement les parties Base64URL et affiche le JSON. Vérifier recalcule la signature avec le secret ou la clé publique et prouve que le header et le payload n’ont pas été modifiés. Un jeton peut se décoder sans problème et avoir une signature invalide.

    Pourquoi « Signature invalide » alors que le jeton marche dans mon application ?

    Le plus souvent, le secret est dans un autre encodage : basculez entre Texte et Base64. Pour les jetons RS et ES, vérifiez que la clé publique correspond au kid du header. Le secret doit être identique octet par octet à celui du serveur, retours à la ligne compris.

    Puis-je vérifier un jeton avec l’URL d’un JWKS ?

    Oui. Collez l’URL du JWKS (par exemple /.well-known/jwks.json) et cliquez sur « Charger les clés ». C’est la seule requête de la page, et seulement via ce bouton. Si le serveur refuse les requêtes du navigateur (CORS), ouvrez l’URL vous-même et collez le JSON dans le champ de clé.

    Puis-je créer un JWT avec cet outil ?

    Oui, dans l’onglet Encodeur. Modifiez le JSON du header et du payload, choisissez HS256, HS384 ou HS512 et saisissez un secret. Des boutons fixent iat à maintenant et exp à une heure plus tard. Le jeton signé se copie ou s’ouvre dans le décodeur.

    Les jetons chiffrés (JWE) sont-ils pris en charge ?

    Non. Un JWE a cinq parties et un payload chiffré, illisible sans la clé privée. Le décodeur reconnaît ces jetons et vous le signale.

    Outils similaires