A todos nos encanta que las apps nativas te pidan que accedas solo una vez y, luego, te recuerden hasta que les digas que quieres salir. Lamentablemente, la Web no siempre funciona de esa manera.
Ahora que los dispositivos, en especial los dispositivos móviles, son más personales y con más sitios que envían todo el tráfico a través de HTTPS, lo que reduce el riesgo de robo de tokens, los sitios web deberían reconsiderar sus políticas de cookies de corta duración y adoptar sesiones más amigables para el usuario y de mayor duración.
Sin embargo, incluso si deseas que la sesión dure más, algunos sitios web no verifican la autenticación del usuario en cada solicitud (en otras palabras, no hay forma de revocar la cookie de sesión una vez que se emite). Por lo general, esto genera sesiones breves, ya que el usuario se ve obligado a acceder con frecuencia para que se vuelva a validar su autenticación, lo que permite que, por ejemplo, un cambio de contraseña invalide las sesiones existentes en un período determinado.
Si este es un enfoque que usas, tenemos una solución técnica que puede ayudarte a volver a validar automáticamente la cookie de autenticación sin estado. Funciona con un token secundario de larga duración que se puede usar para actualizar tu cookie de autenticación de corta duración existente. Aprovechar el nuevo patrón de trabajador de servicio nos permite “registrarnos” con el token de larga duración con frecuencia, verificar la autenticación del usuario (por ejemplo, verificar si no cambió su contraseña recientemente o si revocó la sesión de otra manera) y volver a emitir una nueva cookie de autenticación de corta duración.
Una propuesta práctica para migrar a sesiones largas seguras en la Web
A partir de aquí, en esta publicación, se describe una nueva técnica que proponemos y que llamamos transferencia de 2 cookies (2CH). Esperamos usar este artículo para escuchar los comentarios de la comunidad sobre si este enfoque parece positivo y, de ser así, trabajar con la industria para documentar las prácticas recomendadas para usar 2CH.
Los trabajadores de servicio son una nueva tecnología compatible con varios navegadores, como Chrome, Firefox y Opera, y próximamente estarán disponibles en Edge. Te permiten interceptar todas las solicitudes de red de tu sitio a través de un punto de código común en el cliente, sin modificar las páginas existentes. Esto te permite configurar un "trabajador de 2CH" para los usuarios que hayan iniciado sesión que pueda interceptar todas las solicitudes de red que realiza tu página y realizar el intercambio de tokens, al igual que lo hacen las apps para dispositivos móviles.
La mayoría de las veces, tu servidor ya tiene un extremo que usan las apps para dispositivos móviles para obtener un nuevo token de corta duración, por lo general, con el protocolo OAuth. Para habilitar el patrón anterior en la Web, solo se debe actualizar ese extremo para comprender cuándo lo llama un service worker y, luego, mostrar una nueva cookie de sesión de corta duración con el formato que ya esperan otras páginas del sitio.
Si tu servidor aún no tiene un extremo de este tipo, puede crear uno solo para la administración de sesiones del navegador.
El patrón de dos tokens con trabajadores del servicio sigue el patrón de OAuth 2.0 de manera bastante cercana. Si ya ejecutas un extremo de token de OAuth, es probable que puedas volver a usarlo con trabajadores del servicio para tu autenticación web.
También es posible que te preguntes qué sucede si el usuario visita un navegador que no es compatible con los trabajadores del servicio. Si implementas el enfoque anterior, simplemente no notarán la diferencia y seguirán teniendo sesiones cortas.
Publicamos un cliente y un backend de muestra. Esperamos que la pruebes y respondas una encuesta sobre la administración de sesiones.