¿Qué es un JWT y cómo funciona? Guía Completa
Descubre qué son los JSON Web Tokens (JWT), su estructura de Header, Payload y Signature, y cómo usarlos de forma segura en autenticación.
Tabla de Contenidos
Los JSON Web Tokens (JWT) se han convertido en el estándar de facto para la transmisión segura de información entre partes como un objeto JSON. En este artículo, desglosaremos qué son, cómo funcionan y por qué son esenciales para la autenticación moderna.
Introducción
Si eres desarrollador web, probablemente hayas visto el término JWT (pronunciado “jot”). Es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de transmitir información de forma segura.
Lo más común es usar JWT para autenticación. Cuando un usuario inicia sesión, el servidor genera un JWT y se lo envía al cliente. Luego, el cliente envía ese token en cada solicitud posterior (generalmente en el encabezado Authorization) para demostrar quién es.
Estructura de un JWT
Un JWT es simplemente una cadena de caracteres larga, separada por dos puntos (.) en tres partes:
- Header (Encabezado)
- Payload (Carga útil)
- Signature (Firma)
Por lo tanto, un JWT se ve así: xxxxx.yyyyy.zzzzz
1. Header
El encabezado suele constar de dos partes: el tipo de token (JWT) y el algoritmo de firma que se está utilizando, como HMAC SHA256 o RSA.
{
"alg": "HS256",
"typ": "JWT"
}
2. Payload
La segunda parte contiene los “claims” (reclamaciones). Los claims son declaraciones sobre una entidad (generalmente, el usuario) y datos adicionales. Hay tres tipos de claims: registrados, públicos y privados.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
Nota importante: El payload solo está codificado en Base64, no encriptado. Nunca pongas información secreta (como contraseñas) en el payload, ya que cualquiera puede decodificarlo. Puedes usar nuestra herramienta Inspector de JWT para ver esto en acción.
3. Signature
Para crear la parte de la firma, tienes que tomar el header codificado, el payload codificado, un secreto (clave privada) y el algoritmo especificado en el header, y firmarlo.
La firma se utiliza para verificar que el mensaje no ha sido modificado en el camino.
¿Cuándo usar JWT?
- Autenticación: Es el escenario más común. Una vez que el usuario inicia sesión, cada solicitud posterior incluirá el JWT, permitiendo al usuario acceder a rutas, servicios y recursos permitidos con ese token.
- Intercambio de información: Los JWT son una buena forma de transmitir información de forma segura entre partes. Como se pueden firmar (por ejemplo, usando pares de claves pública/privada), puedes estar seguro de que los remitentes son quienes dicen ser.
Conclusión
Los JWT son una herramienta poderosa y flexible para la seguridad web moderna. Comprender su estructura y limitaciones es clave para usarlos correctamente.
¿Necesitas depurar un token? No olvides probar nuestro Inspector de JWT gratuito.
¿Te fue útil este artículo?
Compártelo con otros desarrolladores o explora nuestras herramientas.