использование Spring Security в разных веб-приложениях - PullRequest
1 голос
/ 25 апреля 2019

Я создаю серверное приложение ROOT.war (содержащее Spring Security) и приложение пользовательского интерфейса viewer.war .

Можно ли объявить конфигурацию безопасности Spring в ROOT.war , которая будет работать для viewer.war ?

например. intercept-url в ROOT.war:

<security:intercept-url pattern="/viewer/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/**" access="permitAll()"/>

Я уже нашел решения для «обмена» информацией о сеансе между веб-приложениями с помощью hazelcast.

установка:

/ - сервер веб-приложений, издательские услуги и обеспечение Spring-Security
/ viewer - веб-приложение пользовательского интерфейса, использующее серверные сервисы и получающее доступ к данным сеанса с сервера

Редактировать :
Я делюсь сеансом, так как невозможно получить доступ к одним и тем же данным сеанса через два веб-приложения. Сохранение имени пользователя в сеансе в ROOT после успешного входа в систему не будет доступно в / viewer (также можно использовать файл сеанса хранилища).
Но это не тот вопрос, который я задаю.
Мне интересно, используется ли фильтр безопасности весны, даже если другое веб-приложение называется / viewer , которое не использует безопасность весны. Подходит ли конфигурация безопасности пружины из ROOT для веб-приложения / viewer ?

Flow:

  • пользовательские запросы / просмотр в браузере
  • Spring Security от ROOT понимают, что пользователь не авторизован
  • переслать на страницу входа / логин
  • после успешного входа в систему, перенаправить на оригинальный запрос / просмотрщик (сеанс с именем пользователя)

1 Ответ

1 голос
/ 25 апреля 2019

Я не уверен, что действительно понимаю ваши потребности.Spring security - это инфраструктура AOP, которая перехватывает запросы с помощью фильтров.Каждый фильтр может отклонять запросы на основе правил безопасности.

Потребность в общих сеансах (на hazelcast, redis или других) возникает в том случае, когда у вас есть несколько серверов ROOT.war, каждый с балансировкой нагрузки и для каждого пользователя, которого вы используете.не знаю, куда отправляется запрос.Сессии должны быть общими для всех серверов.

Полагаю, вы можете разрешить своему клиенту доступ к сеансам Hazelcast, но какова цель этого?

РЕДАКТИРОВАТЬ: Я думаю, что выхочу это какой-то прокси.Сначала необходимо выполнить запросы на ROOT, а в случае успешного входа перейдите на VIEWER.

Вы можете сделать что-то подобное, но все запросы к VIEWER должны проходить через ROOT.И ROOT отправляет запросы в VIEWER.

Вы также можете использовать другой подход, например, JWT.Создайте JWT из ROOT и запросите его в VIEWER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...