Los JWT o JSON Web Token, se han convertido en un método popular para intercambio de información. En este artículo exploraremos qué son, cuándo usarlos, su estructura, funcionamiento y ventajas. ¡Vamos a ello!
JWT o JSON Web Token es un estándar del documento RFC 7519 que define una manera compacta de transmisión de información, o «claims», mediante objetos JSON.
Los claims son parejas de clave/valor representados por JWS (JSON Web Signature) o JWE (JSON Web Encryption), estos son verificables, ya que están firmados digitalmente, o bien con el algoritmo HMAC (Hash-based Message Authentication Code) o bien con un par de llaves pública/privada RSA (Rivest-Shamir-Adleman) o ECDSA (Elliptic Curve Digital Signature Algorithm).
Esta verificación asegura que el contenido del token no ha sido alterado y que la identidad del emisor es confiable.
Los JWT son muy útiles para las siguientes situaciones:
Es el uso más popular del JWT. Cuando un usuario inicia sesión, se devuelve un JSON Web Token. Este token servirá de llave para acceder a los recursos, rutas o servicios que estén permitidos para esa llave.
Como he mencionado antes, los JWT se pueden firmar, esto asegura al receptor de que el emisor es quien dice ser y que la información no ha sido alterada. Por esto, el JSON Web Token se usa como acreditación para el intercambio de información.
Un JSON Web Token tiene tres partes, separadas por puntos. Estas partes son Header, Payload y Signature. El Header consiste de dos partes. La primera es el tipo de token, en este caso JWT, y la segunda es el tipo de algoritmo de firma. Este es un ejemplo de header:
{
"alg": "HS256",
"typ": "JWT"
}
El Payload contiene los claims. Aquí estarán establecidos los datos del usuario, los privilegios y la información que el usuario quiera añadir. Un ejemplo:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
Por último está el signature, esta es la firma que permite verificar si el token es válido o no.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
Una vez tenemos esto, se encripta para generar el JSON Web Token. Podrás hacerlo en la página oficial de JWT. Metemos ahí los datos y obtenemos el token.
La mayoría de lenguajes de programación tienen librerías que gestionan los JWT y nos ahorran todo este trabajo. Puedes encontrar las librerías y características de cada una en la documentación oficial.
Cuando el usuario inicia sesión, el servidor crea un JWT con su información y lo firma. Este token se envía al cliente en el cuerpo de la respuesta HTTP o en una cookie. El cliente almacena este token para utilizarlo en sus solicitudes como «bearer» en el encabezado HTTP Authorization. Cuando se hace una solicitud al servidor, este verifica el JSON Web Token usando la firma. Si esta firma es válida y el token no ha caducado el servidor procede con la solicitud.
Estas son algunas de las ventajas de usar JWT:
Ahora ya sabes qué son y como funcionan los JWT: JSON Web Token. Hemos visto que son muy útiles para la transmisión de información, y tiene aplicaciones interesantes como la implementación de un sistema de login. ¿Te animas a implementarlos? ¡Cuéntanos en comentarios! ¿Quieres saber más sobre seguridad? Aquí te dejo un artículo sobre CORS, ¡Échale un vistazo!
En esta guía práctica, te explicamos qué es el presupuesto de rastreo, por qué es… Leer más
¿Alguna vez te has encontrado con un mensaje que te invita a actuar, ya sea… Leer más
Una de las preguntas más comunes entre los desarrolladores web que comienzan a usar JavaScript… Leer más
Descubre qué es y para qué sirve la preimpresión digital para conseguir una buena impresión… Leer más
Ampliamos información para las redes sociales. Descubre cómo gestionar correctamente los consentimientos necesarios en las… Leer más
Michael Bierut es mucho más que un diseñador; es un educador ejemplar, un escritor locuaz… Leer más