Logo de Dallonses

JWT (JSON Web Token)

¿Qué es un JWT?

Un JSON Web Token es un token compacto y firmado que lleva un pequeño conjunto de claims, normalmente quién es el usuario y qué tiene permitido hacer. Tiene tres partes: una cabecera, un payload de claims y una firma. El servidor lo firma con un secreto o una clave privada, se lo entrega al cliente tras el login, y el cliente lo devuelve con cada petición. El servidor verifica la firma y confía en el contenido sin consultar nada.

Ese último punto es todo el atractivo. Una sesión tradicional guarda estado en el servidor y consulta la base de datos en cada petición. Un JWT es autocontenido, así que cualquier servidor que tenga la clave de verificación puede validarlo, lo que encaja con las APIs y los sistemas distribuidos donde no hay un almacén de sesión compartido. El payload está firmado, no cifrado, así que es legible para cualquiera que tenga el token, lo que significa que dentro nunca van secretos. La parte difícil es la revocación: como el token es válido hasta que expira, no puedes simplemente borrar una sesión para cerrarle la sesión a alguien. Tras autenticarse en una API, un cliente recibe un JWT y lo adjunta a cada llamada posterior, y el servidor lee la identidad del usuario directamente del token verificado.

Los JWT suelen combinar tokens de acceso de vida corta con tokens de refresco de vida más larga para equilibrar la comodidad con el problema de la revocación.

JWTs en Dallonses

Usamos JWTs donde encajan, que es la autenticación de API sin estado entre servicios, y somos deliberados sobre dónde no encajan. Expiración corta en los tokens de acceso, tokens de refresco gestionados con cuidado, y nunca datos sensibles metidos en un payload que cualquiera puede decodificar. El hueco de la revocación es real, así que diseñamos para él en lugar de descubrirlo el día que un cliente necesita forzar el cierre de sesión de una cuenta comprometida.

La autenticación es una de esas áreas donde un pequeño error se convierte en un incidente de seguridad, así que la tratamos como ingeniería de base, no como una librería que conectas una vez. El almacenamiento de tokens, la expiración, los flujos de refresco y la validación de firma reciben el mismo escrutinio que el resto de nuestro desarrollo de aplicaciones web a medida y nuestro desarrollo API first. El objetivo es una autenticación invisible cuando funciona e imposible de saltar cuando alguien lo intenta.

¿Construyes autenticación en una API y la quieres bien hecha? Dejemos sólida la estrategia de tokens.

Hablemos de auth

Servicios relacionados


¿Listo para trabajar juntos?

Reservar una reunión
Aymón sosteniendo una revista Tools frente a su cara
Ari trabajando en una laptop al aire libre rodeado de plantas
Vista superior de un escritorio de madera con teclado, ratón y auriculares
Ilustración dibujada a mano de una mano chasqueando los dedos
Nico recostado contra un dispensador de agua junto a un extintor de incendios
Primer plano de una computadora abierta con placa de circuito y componentes en un escritorio de madera
Bernat y Andreu colaborando en un escritorio con monitores y una laptop
Ilustración dibujada a mano de una mano abierta saludando
Aymón sosteniendo una revista Tools frente a su cara
Ari trabajando en una laptop al aire libre rodeado de plantas
Vista superior de un escritorio de madera con teclado, ratón y auriculares
Ilustración dibujada a mano de una mano chasqueando los dedos
Nico recostado contra un dispensador de agua junto a un extintor de incendios
Primer plano de una computadora abierta con placa de circuito y componentes en un escritorio de madera
Bernat y Andreu colaborando en un escritorio con monitores y una laptop
Ilustración dibujada a mano de una mano abierta saludando