Glosario

¿Qué es JSON Web Token?

Un JSON Web Token (JWT) es un formato de token compacto y seguro para URL, definido por el RFC 7519, que representa reclamaciones entre dos partes como un objeto JSON firmado digitalmente, permitiendo la autenticación sin estado y el intercambio de información.

También conocido como: JSON Web Token, JWTs

Un JWT consta de tres partes codificadas en base64url y separadas por puntos: una cabecera (que especifica el algoritmo de firma), una carga útil (que contiene reclamaciones, es decir, pares clave-valor como el ID de usuario, los roles y el tiempo de caducidad) y una firma (calculada sobre la cabecera y la carga útil usando una clave secreta o privada). La firma permite a cualquier parte que disponga de la clave de verificación confirmar que el token no ha sido manipulado.

Los JWT se usan ampliamente como tokens portadores en la autenticación de API. Después de que un usuario inicia sesión, el servidor emite un JWT que contiene su identidad y permisos. El cliente incluye este JWT en las solicitudes posteriores (normalmente en la cabecera Authorization) y el servidor verifica la firma sin necesidad de consultar una base de datos o un almacén de sesiones. Esta propiedad sin estado hace que los JWT resulten atractivos para sistemas distribuidos y arquitecturas de microservicios donde compartir el estado de sesión entre servicios es poco práctico.

Los JWT conllevan importantes consideraciones de seguridad. Como la carga útil solo está codificada en base64 (no cifrada), cualquiera que intercepte un JWT puede leer su contenido: nunca pongas secretos en las cargas útiles de un JWT a menos que uses JWE (JSON Web Encryption). Los tokens deben tener tiempos de caducidad cortos porque no se pueden revocar fácilmente una vez emitidos. Los ataques de confusión de algoritmos, en los que un atacante cambia la cabecera a «none» o intercambia la verificación asimétrica por simétrica, han sido una vulnerabilidad recurrente en las bibliotecas de JWT.

Cómo usa Vaulted JSON Web Token

Vaulted no usa JWT para la autenticación ni la gestión de sesiones, ya que no tiene cuentas de usuario. Sin embargo, los JWT y otros tokens portadores son credenciales que se comparten con frecuencia y que necesitan una transmisión segura; por ejemplo, compartir un token de API de larga duración o un secreto de JWT de servicio a servicio con un compañero durante un incidente. Vaulted proporciona una entrega cifrada y autodestructiva para estos tokens, garantizando que no persistan en los canales de comunicación.