Autenticación JWT: cómo proteger tu app
Aprende a proteger tus aplicaciones web usando autenticación JWT paso a paso. Conoce su funcionamiento, ventajas y cómo implementarlo en Node.js.
¿Qué es JWT?
JWT (JSON Web Token) es un estándar abierto (RFC 7519) que permite transmitir información de forma segura y compacta entre dos partes como un objeto JSON. Es ampliamente usado en autenticación y autorización de usuarios en aplicaciones web modernas.
¿Por qué usar JWT?
- ✅ No requiere almacenamiento en el servidor.
- ✅ Compatible con múltiples plataformas (web, móviles, etc.).
- ✅ Seguro si se implementa correctamente.
Estructura de un JWT
Un token JWT se compone de tres partes codificadas en base64:
header.payload.signature
1. Header
{ "alg": "HS256", "typ": "JWT" }
2. Payload
Contiene los datos (claims) del usuario. Ejemplo:
{ "userId": "123", "role": "admin" }
3. Signature
Se genera con una clave secreta y se usa para verificar que el token no haya sido alterado.
Cómo implementarlo en Node.js
- Instala el paquete:
npm install jsonwebtoken
- Genera un token:
const jwt = require('jsonwebtoken'); const token = jwt.sign({{ userId: '123' }}, 'secreto', {{ expiresIn: '1h' }});
- Verifica el token:
jwt.verify(token, 'secreto', (err, decoded) => {{ if (err) return res.status(401).send('Token inválido'); req.user = decoded; }});
Buenas prácticas
- 🔒 Nunca compartas tu clave secreta.
- 📅 Usa expiraciones cortas (
expiresIn
). - 📦 Usa HTTPS para proteger los tokens.
- 🧹 Maneja la revocación con listas negras si es necesario.
Conclusión
La autenticación con JWT es una forma eficiente y moderna de proteger tus APIs y aplicaciones. Asegúrate de implementarla con buenas prácticas y mantener tus claves seguras.