Как мне установить домен JSESSIONID на второй уровень в Tomcat? - PullRequest
2 голосов
/ 26 мая 2011

У меня есть служба Tomcat, доступная в следующих доменах:

sub1.domain1.com
sub2.domain1.com

sub1.domain2.com
sub2.domain2.com

Теперь мне нужна прозрачная авторизация (Spring Security) для домена1.Если пользователь входит на sub1.domain1.com, он авторизуется и на sub2.domain1.com.

Это можно сделать с помощью настройки Tomcat

sessionCookieDomain=".domain1.com"

Но теперь авторизация на sub1.domain2.com не работает вообще, потому что весь домен cookie JSESSIONID всегда имеет значение «.domain1.com».

Как я могу заставить tomcat использовать файлы cookie только второго уровня текущего домена?

1 Ответ

2 голосов
/ 26 мая 2011

Простой ответ заключается в том, что простого ответа не существует. По сути, вам нужен первичный сайт входа в систему и схема, с помощью которой вторичные сайты могут устанавливать файлы cookie для своего домена, которые клонируют маркер сеанса первичного сайта. Реализация этого сложна.

Две возможные технологии единого входа - Shibboleth и JASIG CAS.

Подробнее см. В ответах на Единая регистрация в нескольких доменах


Что если я каким-то образом перегружу создание файлов cookie и задаю .domain1.com и .domain2.com там, где это необходимо?

Если foo.domain1.com попытается установить cookie с путем .domain2.com или anything.domain2.com, браузер проигнорирует его по соображениям безопасности. Вы должны пройти сложный танец перенаправлений, чтобы установить куки на обоих доменах. Прочитайте вопрос / ответы, на которые я ссылаюсь (выше), для более подробной информации.

...