Module 2 : Introduction aux JSON Web Tokens (JWT) 🎟️
1. Qu'est-ce qu'un JWT ?
Imaginez que vous allez à un parc d'attraction. À l'entrée, on vous remet un bracelet spécial qui contient :
- Votre identité
- Vos accès
- Une signature impossible à falsifier
Eh bien, un JWT c'est exactement ça, mais en version numérique !
1.1 Structure d'un JWT
Un JWT est composé de trois parties (comme un sandwich, mais en plus digeste) :
Prenons un exemple concret :
1.2 Les Claims : Les Super-pouvoirs de votre Token 🦸♂️
Les Registered Claims : La Carte d'Identité Officielle 🪪
Les Registered Claims fonctionnent comme la carte d'identité officielle de votre token. Ces claims sont standardisés, similaires aux champs de votre passeport :
iss(issuer) : Comparable au pays émetteur de votre passeport, il indique l'origine du tokensub(subject) : Votre numéro unique d'identification dans le systèmeexp(expiration) : La date de validité du token, aussi cruciale que celle d'un passeportiat(issued at) : L'équivalent de la date de délivranceaud(audience) : Définit les destinataires autorisés, comme les visas sur un passeport
Les Public Claims : Votre Profil LinkedIn 👔
Les Public Claims s'apparentent aux informations que vous partagez volontairement sur votre profil professionnel. Ces données sont :
- Publiquement accessibles
- Structurées selon des standards
- Utilisées pour les informations non-sensibles comme :
- Nom
- Rôle
- Permissions générales
Les Private Claims : Votre Carnet Secret 📔
Les Private Claims représentent votre espace personnel de créativité. C'est comme avoir un carnet de notes privé où vous pouvez stocker :
- Des préférences d'interface utilisateur
- Des données spécifiques à votre application
- Des informations contextuelles personnalisées
Avertissement de Sécurité ⚠️
Attention à la Visibilité
Tous les claims, bien qu'encodés en Base64, ne sont pas cryptés. C'est comparable à :
- Écrire avec un stylo invisible... mais visible par tous !
- Mettre des informations sur un badge d'entreprise
Règles d'Or 📜
- Ne jamais stocker de données sensibles dans les claims
- Considérer tous les claims comme potentiellement lisibles par tous
- Utiliser les claims uniquement pour les informations nécessaires à l'authentification et l'autorisation
Conclusion
Cette structure tripartite des claims (Registered, Public, Private) offre une flexibilité remarquable tout en maintenant un standard robuste. C'est comme disposer d'un trousseau de clés numérique complet :
- La clé d'identité (Registered Claims)
- La clé professionnelle (Public Claims)
- La clé personnelle (Private Claims)
Les claims sont véritablement les super-pouvoirs des JWT : ils permettent un transport sécurisé de toutes les informations nécessaires pour identifier, authentifier et autoriser un utilisateur. Tel un badge magique intelligent, ils vous ouvrent précisément les portes dont vous avez besoin, ni plus, ni moins !
2. Anatomie Détaillée : Disséquons notre JWT 🔬
2.1 Le Header (La Tête Pensante)
{
"alg": "HS256", // L'algorithme utilisé (comme la recette secrète de votre plat préféré)
"typ": "JWT" // Le type de token (comme l'étiquette "C'est un JWT" sur votre Tupperware)
}
2.2 Le Payload (Le Corps du Message)
Le payload, c'est comme votre valise en voyage : vous y mettez ce que vous voulez, mais attention au poids !
{
"sub": "1234567890", // Le sujet (qui êtes-vous ?)
"name": "John Doe", // Informations publiques
"admin": true, // Rôle (êtes-vous le boss ?)
"exp": 1516239022 // Date d'expiration (comme le yaourt dans votre frigo)
}
2.3 La Signature (Le Sceau Royal 👑)
3. Le Cycle de Vie d'un JWT 🌱
4. Avantages et Inconvénients des JWT 🎭
4.1 Les Avantages (Pourquoi on les aime ❤️)
4.2 Les Inconvénients (Personne n'est parfait 😅)
- Taille du token (c'est comme essayer de faire rentrer votre garde-robe dans une valise cabine)
- Impossibilité de révoquer (comme un mail envoyé, impossible de le rappeler)
- Sensible au vol (comme votre smartphone, gardez-le précieusement)
5. Bonnes Pratiques 📚
5.1 Sécurité Avant Tout !
5.2 Stockage Sécurisé
Où stocker votre JWT ? C'est comme cacher vos clés à la maison :
- ✅ HttpOnly Cookie : Comme dans un coffre-fort
- ❌ LocalStorage : Comme sous le paillasson (tout le monde sait regarder là !)
6. Exercices Pratiques 🏋️♂️
- Créez un JWT sur jwt.io
- Modifiez le payload et observez la signature
- Essayez de deviner pourquoi la signature change
- Bonus : Implémentez la validation d'un JWT
7. Pour aller plus loin 🚀
Dans le prochain module, nous verrons comment implémenter tout ça en code ! Préparez vos claviers, ça va coder !
Quiz Rapide ✍️
- Qu'est-ce que signifie JWT ?
- Combien de parties composent un JWT ?
- Pourquoi ne pas stocker de données sensibles dans le payload ?
Remember : Un JWT bien utilisé est comme un bon café - fort, sécurisé, et vous tient éveillé pendant des heures ! ☕