Использование Spring Security 3 с файлами cookie - PullRequest
5 голосов
/ 04 июня 2011

У меня есть приложение, построенное на Java, которое требует авторизации. Однако часть аутентификации обрабатывается другим / отдельным приложением (не в Java). Пользователь входит в приложение аутентификации, и оно устанавливает cookie. Если пользователь авторизован для доступа к приложению Java, приложение авторизации перенаправит его на URL-адрес приложения Java.

Я хочу использовать Spring Security для проверки / проверки файла cookie перед тем, как разрешить доступ к приложению Java. Какой лучший способ сделать это? Приложение Java должно сделать ниже:

  1. проверьте, существует ли cookie
  2. если cookie существует, проверьте значения cookie с помощью db. Если нет, отправьте их в другое приложение для входа
  3. если cookie действителен, показать приложение. Если нет, отправьте пользователя в приложение «Аутентификация».

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Вы можете сделать это, сделав свой собственный UsernamePasswordAuthenticationFilter. Внутри фильтра вы можете проверить наличие файлов cookie, которые вам нужны. Вам нужно только переопределить метод attemptAuthentication(). У вас есть объекты запроса и ответа, поэтому проверка файлов cookie должна быть легкой.

Вам также потребуется реализовать UserDetailsService для проверки учетных данных пользователя с базой данных.

  • Этот поможет вам в пользовательском фильтре.
  • Это , как написать UserDetailsService.

Ваша конфигурация пространства имен должна выглядеть примерно так:

<http use-expressions="true" auto-config="false" entry-point-ref="yourEntryPointInApp1">

    <custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
</http>
<authentication-manager>

    <authentication-provider user-service-ref="myDetailsService" />
</authentication-manager>

Также будьте осторожны, чтобы не использовать <formLogin>, если вы решили применить фильтр.

0 голосов
/ 04 июня 2011

Этот сценарий звучит как SAML или OpenID.Если это так, в Spring Security уже должны быть плагины для этого.Если это настраиваемая схема аутентификации, возможно, вы могли бы сделать что-то похожее на то, что делают плагины, поскольку поток аналогичен.

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