
¿Qué es JWT (JSON Web Token)?
JWT (JSON Web Token) es un estándar abierto (RFC 7519) para transferir información de forma segura entre dos partes como un objeto JSON. Es ampliamente utilizado para la autenticación y el intercambio de información debido a su estructura compacta y autónoma.
Estructura de JWT
Un JWT consta de tres partes separadas por puntos (.):
- Header (Cabecera): Contiene el tipo de token (JWT) y el algoritmo de firma (ej., HS256, RS256).
- Payload (Carga útil): Contiene las declaraciones (información sobre el usuario o metadatos como el tiempo de expiración).
- Signature (Firma): Creada firmando la cabecera y la carga útil codificadas con un secreto o una clave para garantizar la integridad de los datos.
Casos de Uso Comunes
- Autenticación: Una vez que un usuario inicia sesión, las solicitudes posteriores incluyen el JWT, permitiendo el acceso a rutas y recursos permitidos con ese token.
- Intercambio de Información: Los JWT son una forma segura de transmitir datos porque pueden ser firmados y verificados.
Mejores Prácticas de Seguridad
- No almacene datos sensibles: El payload está codificado en Base64Url, no cifrado. Cualquiera puede decodificarlo.
- Use algoritmos fuertes: Prefiera RS256 (asimétrico) sobre HS256 (simétrico) para una mejor seguridad en sistemas distribuidos.
- Establezca tiempos de expiración cortos: Minimice la ventana de riesgo si se roba un token.
- Verifique la Firma: Verifique siempre el token en el lado del servidor antes de confiar en los datos.
Depuración de JWT
Cuando un JWT falla en la verificación, verifique lo siguiente:
- ¿Ha expirado el token (declaración
exp)? - ¿Es válida la firma para la clave pública/secreta proporcionada?
- ¿Son correctas las declaraciones como
iss(emisor) oaud(audiencia)?
El uso de una herramienta de depuración de JWT puede ayudarle a inspeccionar el contenido y probar las firmas fácilmente.