Cambios del navegador en el manejo de cookies de SameSite
Problema
Chrome versión 80 y posteriores implementaron una política SameSite de forma que cualquier cookie no establecida explícitamente con un valor SameSite se establecerá en SameSite= Lax.
Los detalles técnicos completos del atributo SameSite están disponibles en la RFC siguiente:https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7
Síntoma
Los síntomas variarán en función del uso de la galleta. Por ejemplo, los inicios de sesión iniciados por SP que utilizan un IDP en un dominio diferente que no ha establecido SameSite=None; Secure en su cookie de sesión tendrán que autenticarse constantemente en el IDP porque la cookie de sesión no se enviará. Otros flujos que requieren una cookie fallarán inesperadamente.
Motivo
Google ha anunciado que Chrome versión 80 y posteriores cambiará los valores predeterminados para las cookies HTTP entre sitios. Se prevé que otros proveedores de navegadores hagan el mismo cambio en un futuro próximo. Encontrará más información en el anuncio del proyecto Chromium aquí: https://blog.chromium.org/2019/10/developers-get-ready-for-new.html
Diagnóstico del problema
- La solicitud se origina en un navegador, no en un cliente HTTP que no sea de navegador.
- La aplicación empresarial responsable de responder está protegida por el proxy inverso y depende de la gestión de sesiones, la afinidad o su propia cookie HTTP específica de la aplicación.
- La cookie en cuestión no se ha recibido de forma inesperada dentro de la solicitud HTTP.
- La solicitud en sí no es una "navegación de nivel superior"; en otras palabras, no es la solicitud que se muestra en la barra de direcciones del navegador.
- Tome nota del dominio utilizado en la navegación de nivel superior.
- La cookie en cuestión no estaba acompañada por el atributo SameSite cuando se transmitió originalmente con la cabecera de respuesta HTTP Set-Cookie.
- El "sitio para cookies" en la URL de la solicitud que falla es diferente del "sitio para cookies" en la navegación de nivel superior.
- El algoritmo para determinar "sitio para cookies" para una solicitud se describe en detalle aquí: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03
- Una explicación simplificada de "sitio para cookies" para una URL de solicitud es la parte más a la derecha del nombre de host que se registró directamente con algún registro público, o el "dominio de nivel superior efectivo + 1". Por ejemplo, todos los URL que terminan en ".example.com" tienen el mismo "sitio para cookies".
- Además de los TLD tradicionales (como .com y .net) y eTLDs (como ".co.uk"), los navegadores también consideran "sufijos públicos" con los que los usuarios registran subdominios, como por ejemplo github.io. Esto significa que el "sitio para cookies" para el URL http://test.github.io/ es "test.github.io".
Solucionar el problema
El proxy inverso se puede configurar para añadir atributos a las cookies a medida que las cookies se devuelven al cliente. Esto se consigue añadiendo entradas a la stanza [cookie-attributes].
SameSite=None y se comportan de forma incoherente cuando se recibe una cookie con este atributo. Para ayudar a superar este problema, el atributo SameSite=None sólo se debe añadir a las cookies si el agente de usuario no coincide con uno de estos navegadores más antiguos. Se ha añadido un nuevo grupo de agentes de usuario, tal como se define en la stanza [user-agent-groups], al archivo de configuración de proxy inverso predeterminado para agrupar estos navegadores más antiguos. El nombre de grupo es 'unsupported-same-site' y debe utilizarse al definir la stanza [cookie-attributes] .PD-S-SESSION-ID = [-unsupported-same-site]SameSite=None; Secure
PD_STATEFUL* = [-unsupported-same-site]SameSite=None; Secure
AMWEBJCT*<isam>*JSESSIONID = [-unsupported-same-site]SameSite=None; Secure
AMWEBJCT*<isam>*https*<SAMESITE_FEDERATION>* = [-unsupported-same-site]SameSite=None; Securedonde <SAMESITE_FEDERATION> es el nombre de una federación de Security Verify Access Federation y <isam> es el nombre de la unión que se crea al ejecutar el asistente de configuración de federación incorporado.