Tokens JWT
Les JSON Web Tokens (JWT) fournissent une méthode sécurisée pour transmettre des informations entre parties sous forme d’objet JSON.
Structure d’un JWT
Un JWT se compose de trois parties séparées par des points :
header.payload.signatureEn-tête
{ "alg": "HS256", "typ": "JWT"}Payload
{ "sub": "1234567890", "iat": 1516239022, "exp": 1516242622}Signature
La signature est créée avec :
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)Créer des tokens JWT
Exemple Node.js
const jwt = require('jsonwebtoken');
const payload = { userId: '12345', scope: ['email', 'contacts']};
const token = jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '1h', issuer: 'your-app', audience: 'brevo-api'});Exemple Python
import jwtimport datetime
payload = { 'user_id': '12345', 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'iat': datetime.datetime.utcnow()}
token = jwt.encode(payload, 'your-secret-key', algorithm='HS256')Utiliser un JWT avec l’API Brevo
curl -X GET "https://api.brevo.com/v3/account" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ -H "Accept: application/json"Validation d’un token
const validateToken = (token) => { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); return { valid: true, payload: decoded }; } catch (error) { return { valid: false, error: error.message }; }};Bonnes pratiques
- Utilisez des secrets forts et aléatoires
- Définissez des durées d’expiration adaptées
- Validez les tokens à chaque requête
- Utilisez exclusivement HTTPS
- Stockez les secrets de manière sécurisée
- Implémentez une logique de rafraîchissement de token