Descubre qué es un JWT token, cómo funciona y por qué es clave en la autorización moderna. Aprende diferencias con las sesiones, mejores prácticas de seguridad y cuándo implementar JWT en tus proyectos.
JWT token es una de las formas más populares de autorización en aplicaciones web modernas. Se utiliza en API, aplicaciones móviles y servicios con arquitectura de microservicios porque permite trabajar sin almacenar sesiones en el servidor.
Antes, el servidor debía recordar a cada usuario (mediante sesiones), pero con JWT todo funciona de otra manera: toda la información se transmite junto con la solicitud. Esto hace el sistema más rápido, fácil de escalar y más conveniente para servicios distribuidos.
En este artículo veremos qué es un JWT token, cómo funciona, de qué está compuesto y en qué se diferencia de las sesiones clásicas.
JWT token es una cadena especial que almacena información sobre el usuario y se utiliza para su identificación sin necesidad de guardar datos en el servidor. JWT significa JSON Web Token.
En otras palabras, es un "pase digital" que recibes después de iniciar sesión. En vez de que el servidor verifique al usuario en la base de datos cada vez, simplemente revisa el token y entiende quién eres y qué permisos tienes.
JWT se usa activamente en aplicaciones web modernas, móviles y API. Por ejemplo:
La idea principal de JWT es que toda la información se almacena dentro del token, no en el servidor. Esto hace el sistema más rápido y fácil de escalar.
Un token normalmente se ve como una cadena larga, separada por puntos, por ejemplo:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Aunque parece una cadena aleatoria, dentro contiene:
Importante: JWT no encripta los datos, solo los codifica. Esto significa que el contenido puede ser descifrado, pero no modificado sin romper la firma.
JWT se popularizó porque permite la autorización sin sesiones. El servidor no necesita almacenar el estado del usuario: toda la información ya está en el token.
El funcionamiento de JWT token gira en torno a una idea sencilla: el servidor emite el token una vez, y luego simplemente lo verifica en cada solicitud, sin guardar el estado del usuario.
Opciones de almacenamiento:
Luego empieza la etapa clave: su uso. Cada solicitud posterior al servidor se envía con el token, normalmente en el encabezado:
Authorization: Bearer <token>
El servidor, al recibir la solicitud:
Si todo es correcto, el usuario se considera autorizado y la solicitud se ejecuta.
Importante: el servidor no guarda ninguna información del usuario entre solicitudes. Todo lo necesario ya está en el token.
Por eso se llama enfoque stateless -sin estado-.
Este mecanismo es especialmente útil para:
Además, JWT suele usarse junto con OAuth. Puedes leer más en la guía sobre cómo funciona OAuth 2.0 y la seguridad en el inicio de sesión.
Un JWT token consta de tres partes separadas por puntos:
header.payload.signature
Cada parte se codifica en Base64, por lo que el token parece una cadena de caracteres, pero en realidad tiene una estructura legible.
Contiene información sobre el tipo de token y el algoritmo de firma.
{
"alg": "HS256",
"typ": "JWT"
}
Es la parte principal del token, donde se almacena la información.
{
"userId": 123,
"role": "admin",
"exp": 1712345678
}
Pueden incluirse:
Atención: el payload no está cifrado, solo codificado. Cualquiera puede leerlo.
La parte más importante, que protege el token de falsificaciones.
La firma se crea a partir de:
Si alguien intenta modificar los datos del token, la firma no coincidirá y el servidor rechazará la solicitud.
En resumen, JWT es un contenedor autosuficiente de datos y protección. El servidor no necesita consultar la base de datos para saber quién es el usuario: toda la información ya está en el token.
Al trabajar con JWT, a menudo se confunden los términos autenticación y autorización. Están relacionados, pero realizan funciones diferentes.
Es el proceso de verificar la identidad del usuario.
En otras palabras, el sistema responde: ¿quién eres?
Ejemplo:
En esta etapa normalmente se genera el JWT token.
Es el siguiente paso. El sistema responde: ¿qué puedes hacer?
Por ejemplo:
Esta información se guarda dentro del JWT, generalmente en el payload (por ejemplo, en el campo role).
Es decir, JWT une ambos procesos:
Importante: el JWT en sí no realiza la autenticación; solo almacena el resultado tras verificar al usuario.
Para entender el valor de JWT, es importante compararlo con el enfoque clásico: las sesiones.
Tras iniciar sesión, el servidor:
En cada solicitud posterior:
Es decir, el servidor mantiene el estado del usuario.
En vez de guardar datos en el servidor:
El servidor no busca nada en la base de datos, solo verifica el token.
Conclusión clave: JWT es ideal para flexibilidad y escalabilidad; las sesiones, para control y simplicidad en la gestión.
En aplicaciones reales, casi nunca se usa JWT solo. En cambio, se emplea una combinación de dos tokens: access token y refresh token, para equilibrar seguridad y comodidad.
Es el token principal que se utiliza en las solicitudes.
Si se roba el access token, el atacante solo podrá usar el sistema durante un tiempo limitado.
Es un token auxiliar para renovar el access token.
La combinación de access + refresh token resuelve este problema:
El refresh token suele:
Este enfoque se usa en casi todos los sistemas de autorización modernos.
JWT se considera seguro, pero solo si se implementa correctamente. Los errores pueden llevar a vulnerabilidades graves.
La principal protección de JWT es la firma. Cuando el servidor crea un token:
En cada solicitud el servidor:
Si los datos del token han sido alterados, la firma no coincidirá y se rechazará el acceso.
El JWT no puede ser "adivinado", pero sí robado. Si un atacante obtiene el token, podrá:
El servidor no puede distinguirlo del usuario real.
Las opciones de almacenamiento afectan mucho la seguridad:
JWT es seguro si:
JWT es una herramienta poderosa, pero no sirve para todo. Es importante saber cuándo aporta ventajas reales.
Ideal porque:
JWT resuelve esto:
JWT permite:
En estos casos se suele usar JWT junto con OAuth. Más detalles en la guía sobre OAuth 2.0 y la seguridad en el inicio de sesión.
Las sesiones son más simples y seguras.
Si es clave cerrar sesión de inmediato o controlar sesiones, usa sesiones clásicas.
JWT puede no ser lo suficientemente flexible.
Idea principal: JWT es una herramienta para sistemas escalables, APIs y frontend modernos, arquitecturas distribuidas, pero no es una solución universal.
JWT token es un método moderno de autorización que permite trabajar sin almacenar sesiones en el servidor. Contiene toda la información necesaria y se verifica mediante una firma, haciendo el sistema rápido y escalable.
En este artículo hemos analizado:
En la práctica, JWT es excelente para APIs, apps móviles y microservicios, pero en proyectos simples puede ser excesivo.
En resumen: JWT es comodidad y escalabilidad; las sesiones, control y simplicidad. La elección depende de las necesidades, la arquitectura y los requisitos de seguridad.