Spring GDS 25 Aniversario
Una empresa de logística que envía a 190 países construyó algo para enviarse a sí misma.
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.
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.
Una empresa de logística que envía a 190 países construyó algo para enviarse a sí misma.
Convertir una marca en un negocio que funciona.
Medio millón de personas. Una app. Cero caos.















