Как я могу поделиться сессией в двух веб-приложениях на разных веб-серверах?
У меня следующая проблема. У клиента есть веб-приложение Java EE, работающее в EAServer 5.5.0 с настраиваемым входом в систему. Вход в систему очень прост, когда приложение проверяет учетные данные, введенные пользователем через веб-страницу, сохраняет имя пользователя и профиль в переменной сеанса. Таким образом, приложение знает, жив ли сеанс. Теперь у клиента есть другое веб-приложение Java EE, работающее на jboss server 7.1, и он хочет, чтобы пользователь вошел в веб-приложение, работающее на EAServer, и одновременно вошел в приложение, работающее на Jboss Server, без каких-либо дальнейших шагов.
Моей первой идеей было отправить учетные данные через AJAX-вызов из EAServer в веб-приложение Jboss и сохранить их в сеансе, так же, как это делает EAServer. Кажется, это хорошо работает в Internet Explorer, но в chrome или firefox вызов ajax выполняется, и переменные сеанса создаются в jboss, но когда пользователь пытается увидеть любое представление в приложении Jboss, переменные сеанса просто исчезли.
Может кто-нибудь сказать, пожалуйста, как лучше всего это сделать? или с какой проблемой я сталкиваюсь с chrome и firefox, которые не сохраняют переменные сессии после вызова ajax?
2 ответа
Один из способов сделать это - единый вход, предложенный Леонардо Луисом в комментарии.
Но у меня есть другое предложение. Просто установите Redis и используйте его как хранилище сеансов. В настоящее время это очень стандартно и широко используется в Ruby on Rails, NodeJ и Java.
Некоторые библиотеки, которые могут помочь вам:
Tomcat Redis Session Manager (я знаю, что вы используете другой сервер сервлетов, но все же вы можете взглянуть, чтобы получить идею)
Или вы можете использовать memcached. В этом случае вы можете использовать:
Необходимая функция называется " Единый вход". Я считаю, что лучше интегрировать существующее решение в вашу среду, чем создавать собственное.
Я уже использовал два решения для этого:
Это не будет легкой задачей и требует определенных знаний о проблемах безопасности.
Если вы действительно хотите создать собственное решение, здесь есть некоторая информация: http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/