En iPads después de actualizar a iPadOS 16.4, Safari a menudo "pierde" la cookie de sesión proporcionada por PlayFramework: Cuando el navegador solicita activos (scripts de js) o cuando se obtienen datos adicionales mediante JavaScript, la cookie de sesión no se incluye en la solicitud.
Estas solicitudes secundarias se redirigirán a través de nuestro IAM porque no hay cookie de sesión presente. El IAM redirige de nuevo al dominio original con un payload para que la sesión de inicio de sesión pueda ser reanudada. Se envía un nuevo encabezado Set-Cookie en la respuesta con la nueva cookie de sesión.
Esto hace que el framework emita un nuevo token CSRF (que forma parte de la cookie de sesión) que es diferente del anterior que ya se ha renderizado en un campo de formulario oculto. El navegador almacena este nuevo token y lo incluye cuando POSTea el formulario. El token en el cuerpo de la solicitud es ahora diferente al de las cookies, lo que hace que la verificación CSRF falle.
Hemos probado diferentes dispositivos (Android, Windows, MacBook y iPads) en diferentes versiones. El problema solo ocurre con Safari en iPad/MacBook ejecutando la versión 16.4, 16.4.1 o 16.5 beta. El problema no se puede reproducir usando Chrome en iPad. Además, el problema no ocurre con la navegación privada en Safari.
Algunas cosas que descartamos:
- Mismo comportamiento en dispositivos gestionados por MDM y en dispositivos abiertos.
- La versión de PlayFramework ha sido actualizada a la última versión 2.8.
- Usar una cookie separada para el token CSRF (en lugar de la cookie de sesión de juego) tampoco hace ninguna diferencia.
- Modificar el encabezado Cache-Control para almacenar en caché las respuestas de forma más agresiva o no hacerlo en absoluto no ayuda.
¿Alguien más ha experimentado este problema o problemas similares?