Нужны предложения по дизайну безопасности для веб-приложения

Я разрабатываю модуль безопасности для веб-приложения с использованием Spring Security. Есть 3 отдельных войны (3 приложения) с использованием отдельного входа в систему, развернутые на сервере JBOSS. Требуется следующее: если пользователь аутентифицирован в одном приложении, он должен иметь доступ к другим приложениям без входа в систему. Можно ли разделить контекст безопасности между веб-приложением (разные войны не в одном EAR). Мы обсуждали SSO, но мы пытаемся достичь этого с помощью Spring безопасности и с поддержкой сервера приложений. Там в любом случае ? Пожалуйста, поделитесь своими ценными предложениями и предложениями. Если вам нужна дополнительная информация, дайте мне знать.


person Sampathkumar    schedule 27.04.2014    source источник


Ответы (2)


Самый простой способ - использовать обычную аутентификацию Spring Security (например, на основе формы с именем пользователя / паролем) и включить функция" запомнить меня ".

Пока все три приложения развернуты в одном домене (и, следовательно, могут совместно использовать свои файлы cookie), функция «запомнить меня» будет работать без проблем для всех из них, то есть как только пользователь аутентифицируется в любом из приложений, он сможет получить доступ к другие без необходимости повторной аутентификации.

Это, конечно, не решает таких проблем, как единый выход из системы, но в любом случае это, похоже, не является вашей целью.

Вы можете настроить это за короткое время, и вам не нужны сторонние компоненты SSO. Хотя ретрансляция по стандартным протоколам SSO и выделенным технологиям, как правило, является более безопасным вариантом.

person Vladimír Schäfer    schedule 28.04.2014
comment
Спасибо VSChafer. попробую реализовать опцию «запомнить меня». Это для POC. Я понял вашу точку зрения на стандартные протоколы единого входа. В производстве мы перейдем к SSO. - person Sampathkumar; 28.04.2014

Недавно я сделал это с помощью SSO и Spring Security, однако я написал для использования наш собственный фильтр безопасности, который получает значение HttpServletRequest.getRemoteUser (), предоставляемое фильтром SPNEGO. Одно дело с SSO: большинство механизмов используют Kerberos, который действительно работает только в локальных средах рабочего стола. Можно написать резервный механизм, который перенаправит пользователя на страницу входа в систему, но тогда у вас все еще есть проблема.

Другой вариант - переупаковать ваши приложения в виде EAR (см. здесь).

person David Levy    schedule 27.04.2014
comment
Вздох, спасибо за информацию. мы не хотим устанавливать конкретный SSO (siteminder или CAS), и мы пытаемся использовать другие варианты (безопасность на уровне контейнера), такие как Spring Security с Apache Tomcat SSO Valve или JBOSS SSO. Согласно требованию, веб-приложения должны быть развернуты как отдельный файл war на том же сервере. планируете использовать варианты использования 2 и 3. java.dzone.com/articles/choosing -sso-your-jboss. наша цель - разделить контекст безопасности Spring между приложениями на одном сервере. - person Sampathkumar; 28.04.2014