весенний вход в систему безопасности с остальным веб-сервисом - PullRequest
1 голос
/ 26 июля 2011

В моей компании есть специальный поставщик аутентификации, который является внутренней веб-службой REST. Фактически вы предоставляете логин / пароль для веб-службы, и он возвращает токен (срок действия которого составляет несколько часов), который должен указываться в заголовке для каждого следующего бизнес-запроса к веб-службе.

Мне нужно создать веб-приложение, и мне нужно подключить его к этому провайдеру аутентификации. Как лучше всего интегрировать его с Spring Security?

Как я могу управлять сроком действия токена в моем веб-приложении, не прося пользователя повторно войти в систему?

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

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

 public class AuthProviderImpl implements AuthenticationProvider 
 {
      @Override
   public Authentication authenticate(Authentication authentication)
     throws AuthenticationException 
        {
          WebServiceAuthClient client = //get an handle to your web service
          //get user name, password from authenticate object
          client.autheticat(username, pwd);
        }

 }

Настройка веб-приложения для использования Spring Security http://static.springsource.org/spring-security/site/petclinic-tutorial.html

1 голос
/ 02 августа 2011

Я только что столкнулся с ситуацией, очень похожей на исходный вопрос, и вот над чем я буду работать: http://static.springsource.org/spring-security/site/docs/3.0.x/reference/preauth.html

РЕДАКТИРОВАТЬ:

В нашей ситуации сеанс исвязанный с ним файл cookie управляется извне, и мы должны только проверять и авторизовать каждый запрос на основе внешнего хранилища сеансов.

Так что вместо этого мы будем использовать пользовательский SecurityContextRepository.

EDIT2:

Написание SecurityContextRepository, проверяющего каждый запрос на общее хранилище токенов, было тривиально, подключение его в Spring Security было безумным: элемент http в security-context.xml не позволяет настраивать securityContextPersistenceFilter, поэтомуподражать его с простыми бобами.Совсем не весело.

...