Guide de décodage des jetons d'authentification : OAuth, SAML et jetons Bearer
Dans le développement web moderne, l'authentification se résume rarement à un simple nom d'utilisateur et un mot de passe. Au lieu de cela, les systèmes échangent des « jetons » (tokens) — des chaînes opaques ou semi-transparentes qui transportent des données d'identité et de permission. Lors du débogage des flux d'authentification ou de la réalisation d'audits de sécurité, être capable de décoder et d'inspecter ces jetons est une compétence critique.
Ce guide explore la structure technique des jetons d'authentification les plus courants et la manière de les décoder.
1. Le jeton Bearer (JWT et au-delà)
Le jeton Bearer (porteur) est la méthode la plus courante pour authentifier les requêtes API. Il est généralement envoyé dans l'en-tête Authorization :
Authorization: Bearer <token>
Qu'est-ce qu'un jeton Bearer ?
Un jeton Bearer est un jeton de sécurité qui accorde l'accès à quiconque le « porte ». C'est comme une clé physique ; le système ne se soucie pas de savoir qui vous êtes, seulement que vous possédez la clé.
Décodage des jetons Bearer
La plupart des jetons Bearer modernes sont des JWT (JSON Web Tokens). Un JWT se compose de trois parties encodées en Base64Url :
- Header (En-tête) : Métadonnées sur le jeton (algorithme, type).
- Payload (Charge utile) : Les « claims » ou revendications (ID utilisateur, expiration, portées).
- Signature : Preuve cryptographique que le jeton n'a pas été altéré.
Pour décoder un JWT manuellement, vous pouvez diviser la chaîne par les points et utiliser un décodeur Base64Url sur les deux premières parties. Pour une expérience plus visuelle, vous pouvez utiliser un Décodeur JWT.
2. Décodage des jetons OAuth
OAuth 2.0 utilise plusieurs types de jetons, mais celui que vous rencontrerez le plus souvent est le jeton d'accès (Access Token).
Jetons opaques vs structurés
- Jetons structurés (JWT) : Comme décrit ci-dessus, ils peuvent être décodés localement pour voir les données de l'utilisateur.
- Jetons opaques : Ce sont des chaînes aléatoires (comme
ghp_...pour GitHub) qui n'ont aucune signification pour le client. Ils ne peuvent être « décodés » que par le serveur d'autorisation qui les a émis, généralement via un point de terminaison d'introspection (Introspection Endpoint).
Comment inspecter un jeton OAuth
Si le jeton est un JWT, suivez le processus de décodage standard du JWT. S'il est opaque, vous devrez peut-être consulter la documentation du fournisseur spécifique (Google, Microsoft, GitHub) pour voir s'il propose un outil de débogage ou une API pour inspecter les métadonnées du jeton (portées, expiration, etc.).
3. Décodeur d'assertion SAML
SAML (Security Assertion Markup Language) est le grand frère du JWT, basé sur le XML. Il est massivement utilisé dans l'authentification unique (SSO) en entreprise.
Le flux SAML
Lorsque vous vous connectez via SAML, le fournisseur d'identité (IdP) envoie une SAMLResponse à votre application, généralement sous la forme d'un champ de formulaire caché.
Comment décoder une assertion SAML
Une assertion SAML est généralement un document XML encodé en Base64.
- Décodage Base64 : Reconvertissez la chaîne en XML brut.
- Mise en forme (Pretty Print) : Formatez le XML pour qu'il soit lisible.
- Inspecter les revendications : Recherchez
<saml:AttributeStatement>pour trouver l'e-mail de l'utilisateur, ses rôles et d'autres attributs.
Comme les assertions SAML sont en XML, elles sont beaucoup plus verbeuses que les JWT et incluent souvent des signatures numériques (<ds:Signature>) et parfois du chiffrement.
4. Décodeur d'authentification de base (Basic Auth)
Bien qu'ancienne, l'authentification de base est encore courante pour les API simples ou les outils internes.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Décodage du Basic Auth
La chaîne après Basic est une simple chaîne encodée en Base64 au format nom_utilisateur:mot_de_passe.
Pour la décoder :
- Prenez la chaîne
dXNlcm5hbWU6cGFzc3dvcmQ=. - Décodez-la en Base64 pour obtenir
nom_utilisateur:mot_de_passe.
Tableau récapitulatif : Le décodage des jetons en un coup d'œil
| Type de jeton | Préfixe d'en-tête | Format | Méthode de décodage |
|---|---|---|---|
| JWT | Bearer |
JSON / Base64Url | Décodage Base64Url + Analyse JSON |
| OAuth (opaque) | Bearer |
Chaîne aléatoire | API d'introspection de jeton |
| SAML | N/A (Formulaire) | XML / Base64 | Décodage Base64 + Analyse XML |
| Basic Auth | Basic |
Chaîne / Base64 | Décodage Base64 |
Conclusion
Comprendre comment décoder les jetons d'authentification est essentiel pour résoudre les erreurs « Non autorisé » et s'assurer que votre application transmet les bonnes permissions. Que vous ayez affaire à un JWT moderne ou à une assertion SAML héritée, la première étape consiste toujours à identifier l'encodage (généralement Base64) et le format sous-jacent (JSON ou XML).
Besoin d'un moyen rapide d'inspecter un jeton ? Utilisez notre Décodeur JWT pour analyser vos jetons en toute sécurité, localement dans votre navigateur.