## Bases & syntaxe
### Structure JWT
```jwt
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Token JWT structuré en trois parties séparées par des points.
Structures de données
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"exp": 1516239022
}
Données encodées dans le JWT.
Fonctions & méthodes essentielles
Encoder un token
const jwt = require('jsonwebtoken');
const token = jwt.sign({ id: 1 }, 'secret', { expiresIn: '1h' });
console.log(token);
Crée et retourne un token JWT encodé.
Décoder un token
const decoded = jwt.verify(token, 'secret');
console.log(decoded.id); // Outputs: 1
Décrypte le token JWT pour obtenir les données du payload.
Patterns courants
Token d'authentification
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (token == null) return res.sendStatus(401);
Middleware pour vérifier le token JWT dans les en-têtes.
Operations avancées
Génération de clé secrète
const crypto = require('crypto');
const secret = crypto.randomBytes(256).toString('hex');
console.log(secret);
Génère une clé secrète sécurisée pour l'encodage JWT.
Debugging & outils
Vérification de la validité du token
try {
jwt.verify(token, 'secret');
} catch (err) {
console.error('Token invalide:', err.message);
}
Gère les erreurs liées à la validation du JWT.
Utilisation de jwt-decode
const decoded = decodeURIComponent(escape(atob(token.split('.')[1])));
console.log(JSON.parse(decoded));
Décrypte et affiche le payload sans vérification.