Spring Security - два отдельных источника информации для аутентификации - PullRequest
1 голос
/ 22 июня 2011

Моя учетная запись на основе форм Spring Security в настоящее время содержит форму и LdapAuthenticationProvider по умолчанию, и я могу аутентифицироваться должным образом.Но есть новое требование, чтобы убедиться, что пользователь включен.Эта информация находится в базе данных вместо LDAP.Так как мне это сделать?

Стоит ли смотреть на использование AbstractAuthenticationProcessingFilter и выполнять дополнительную проверку в методе successAuthentication

Или есть лучший способ сделать это.

1 Ответ

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

Я бы сказал, что расширение UsernamePasswordAuthenticationFilter и переопределение attemptAuthentication() - это хороший способ. В attemptAuthentication() вы можете проверить как данные БД, так и данные LDAP. Вы можете загрузить информацию о пользователе, используя UserDetailsService как this .

Другой способ - это (как вы сами предложили) расширение AbstractAuthenticationProcessingFilter и запуск фильтра после фильтра FORM_LOGIN, например:

<http ...>
    ...
    <custom-filter after="FORM_LOGIN_FILTER" ref="myAuthenticationProcessingFilter" />
</http>

Хорошая идея, вероятно, состоит в том, чтобы создать 2 отдельных фильтра для аутентификации LDAP и БД и запускать их один за другим. Таким образом, вы можете отключить любой из них, если вам нужно.

Эта часть документов Spring поможет вам в пользовательских фильтрах.

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