Acabo de pasar por todo esto en busca de una solución simple. Empecé a mirarlo desde la perspectiva de Tomcat primero.
Tomcat no da acceso directo a la configuración de la cookie de dominio para la sesión, y definitivamente no quería personalizar el parche de tomcat para solucionar ese problema como se muestra en otras publicaciones.
Las válvulas en tomcat también parecen ser una solución problema debido a las limitaciones para acceder a las cookies de encabezados & integradas en la especificación de Servlet. También fallan por completo si se confirma la respuesta http antes de que pase a su válvula.
Como aprobamos nuestras solicitudes a través de Apache, pasé a utilizar apache para solucionar el problema.
Probé por primera vez la directiva mod_proxy ProxyPassReverseCookieDomain, pero no funciona para las cookies de JSESSIONID porque tomcat no establece el atributo de dominio y ProxyPassReverseCookieDomain no puede funcionar sin algún tipo de dominio que forme parte de la cookie.
También encontré un truco usando ProxyPassReverseCookiePath, donde estaban reescribiendo la ruta para agregar un atributo de dominio a la cookie, pero eso parecía demasiado complicado para un sitio de producción.
Finalmente lo tengo que trabajar reescribiendo los encabezados de respuesta usando el módulo mod_headers en apache mencionado por Dave arriba.
he añadido la siguiente línea dentro de la definición de host virtual:
Header edit Set-Cookie "(JSESSIONID\s?=[^;,]+?)((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(;\s?(?:(?i)Domain\s?=)[^;,]+?)?((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(,|$)" "$1$2; Domain=.example.com$4$5"
lo anterior debe ser todos una sola línea en la config. Reemplazará cualquier atributo de dominio de cookies JSESSIONID con ".example.com". Si una cookie JSESSIONID no contiene un atributo de dominio, entonces el patrón agregará uno con un valor de ".example.com". Como beneficio adicional, esta solución no sufre el doble problema de cookies JSESSION de las válvulas.
El patrón debería funcionar con varias cookies en el encabezado Set-Cookie sin afectar las otras cookies en el encabezado. También debe ser modificable trabajar con otras cookies cambiando JSESSIONID en la primera parte del patrón por el nombre de cookie que desee.
No soy usuario avanzado de reg-ex, por lo que estoy seguro de que hay un par de optimizaciones que se podrían hacer para el patrón, pero parece estar funcionando para nosotros hasta ahora.
Actualizaré esta publicación si encuentro algún error con el patrón. Con suerte, esto evitará que algunos de ustedes pasen los últimos dos días frustrados como yo.
+1 Justo lo que estaba buscando! Finalmente incluyeron el parche. – Kdeveloper