Je viens de traverser tout cela à la recherche d'une solution simple. J'ai commencé à le regarder du point de vue de Tomcat d'abord. Tomcat ne donne pas un accès direct à la configuration du cookie de domaine pour la session, et je ne voulais absolument pas personnaliser le correctif tomcat pour résoudre ce problème comme indiqué dans d'autres publications.
Les vannes dans tomcat semblent également être une solution problématique en raison des limitations d'accès aux en-têtes & cookies intégrés à la spécification Servlet. Ils échouent également complètement si la réponse http est validée avant d'être transmise à votre valve.
Depuis que nous avons envoyé nos requêtes via Apache, je suis passé à la façon d'utiliser apache pour résoudre le problème.
J'ai d'abord essayé la directive mod_proxy ProxyPassReverseCookieDomain, mais cela ne fonctionne pas pour les cookies JSESSIONID car tomcat ne définit pas l'attribut domain et ProxyPassReverseCookieDomain ne peut pas fonctionner sans qu'une sorte de domaine fasse partie du cookie. J'ai également rencontré un hack utilisant ProxyPassReverseCookiePath où ils réécrivaient le chemin d'accès pour ajouter un attribut de domaine au cookie, mais cela semblait désagréable pour un site de production.
Je l'ai enfin réussi à réécrire les en-têtes de réponse en utilisant le module mod_headers dans apache comme mentionné par Dave ci-dessus.
J'ai ajouté la ligne suivante dans la définition d'hôte virtuel:
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"
ci-dessus doivent tous être une seule ligne dans la configuration. Il remplacera tout attribut de domaine de cookies JSESSIONID par ".example.com". Si un cookie JSESSIONID ne contient pas d'attribut de domaine, le modèle en ajoute un avec la valeur ".example.com". En prime, cette solution ne souffre pas du double problème de cookies JSESSION des vannes.
Le modèle doit fonctionner avec plusieurs cookies dans l'en-tête Set-Cookie sans affecter les autres cookies dans l'en-tête. Il devrait également être modifiable de travailler avec d'autres cookies en changeant JSESSIONID dans la première partie du modèle à n'importe quel nom de cookie que vous désirez.
Je ne suis pas un utilisateur power reg-ex, donc je suis sûr qu'il y a quelques optimisations qui pourraient être apportées au pattern, mais ça semble marcher pour nous jusqu'à maintenant.
Je vais mettre à jour ce post si je trouve des bugs avec le motif. J'espère que cela empêchera quelques-uns d'entre vous de subir les frustrations des deux derniers jours comme je l'ai fait.
+1 Juste ce que je cherchais! Enfin, ils ont inclus le patch. – Kdeveloper