Tokens JWT
Los JSON Web Tokens (JWT) ofrecen un método seguro para transmitir información entre dos partes en forma de objeto JSON.
Estructura de un JWT
Un JWT se compone de tres partes separadas por puntos:
header.payload.signatureCabecera
{ "alg": "HS256", "typ": "JWT"}Payload
{ "sub": "1234567890", "iat": 1516239022, "exp": 1516242622}Firma
La firma se genera de esta manera:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)Crear tokens JWT
Ejemplo en 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'});Ejemplo en 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')Usar JWT con la API de Brevo
curl -X GET "https://api.brevo.com/v3/account" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ -H "Accept: application/json"Validación de tokens
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 }; }};Buenas prácticas
- Usa secretos fuertes y aleatorios
- Define tiempos de expiración adecuados
- Valida los tokens en cada petición
- Usa solo HTTPS
- Guarda los secretos de forma segura
- Implementa una lógica de renovación de tokens