Внешняя аутентификация с использованием Spring Security - PullRequest
0 голосов
/ 17 октября 2011

У нас есть собственное центральное управление сессиями. Обычно пользователь может проходить аутентификацию с помощью имени пользователя и пароля, и в результате он получает идентификатор_сессии. Все остальные операции выполняются с этим session_id. Допустим, что управление сессией осуществляется через XML RPC.

Мне нужно реализовать два случая:

  • Центральное веб-приложение, созданное весной, которое имеет форму входа
  • Внешние веб-приложения, также созданные весной, которые полагаются на передано только session_id.

Еще несколько замечаний относительно системы:
- session_id хранится в cookie (после успешного входа в систему я должен добавить cookie в ответ)
- каждый запрос страницы должен проверять правильность session_id в системе управления сессиями

Я довольно новичок в Spring, поэтому я изо всех сил пытаюсь понять, где и как реализовать мою собственную логику.

Мои вопросы:

  1. Какие части системы я должен реализовать, чтобы иметь свой собственный логин логика (нужно тоже иметь доступ к объекту ответа - установить cookie)? Я пробовал кое-что с расширением UsernamePasswordAuthenticationFilter и реализацией собственного AuthenticationManager, но я не уверен, что я иду правильно способ.

  2. Есть ли точка, где / как я могу реализовать свой "каждый сеанс запроса отметьте "в безопасности Spring"?

1 Ответ

0 голосов
/ 17 октября 2011
  • session_id хранится в cookie (после успешного входа в систему я должен добавить cookie в ответ)

Сделайте это в AuthenticationSuccessHandler, который настроен для вашего <form-login> элемента:

<form-login authentication-success-handler-ref="authenticationSuccessHandler"/>
  • Внешние веб-приложения, также созданные в Spring, которые используют только переданный session_id.

Создайте новый фильтр, в котором вы проверяете cookie cookie session_id. Если файл cookie отсутствует или является недействительным, перенаправьте пользователя в центральное веб-приложение для входа в систему. Если файл cookie присутствует и действует, а пользователь еще не прошел проверку подлинности, создайте новый Authentication и добавьте его в SecurityContextHolder.

Взгляните на RememberMeAuthenticationFilter.doFilter () для примера того, что вы хотите сделать в своем фильтре.

Добавьте этот фильтр в цепочку фильтров, используя элемент <custom-filter>.

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