Spring Security: один провайдер аутентификации для загрузки прав, а другой для реальной аутентификации - PullRequest
0 голосов
/ 25 октября 2011

Мое приложение использует Spring Security для обработки аутентификации.До сих пор я использовал простой провайдер аутентификации на основе jdbc-user-service, который выполнял авторизацию и авторизацию загрузки, и все это работало нормально:

<authentication-manager alias="authenticationManager">
    <authentication-provider>
        <password-encoder hash="sha" />
        <jdbc-user-service data-source-ref="dataSource"
            authorities-by-username-query="select t1.login, t2.USERROLES from USER as t1, USERROLES as t2 where t1.ID=t2.User_ID and t1.login= ?"
            users-by-username-query="select login,password,enabled from USER where login = ?" />
    </authentication-provider>
</authentication-manager>

Теперь я получил новую спецификацию:

  1. Полномочия должны быть загружены из базы данных, как и раньше
  2. Аутентификация должна выполняться с использованием LDAP

Я правильно настроил аутентификацию LDAP в тестовом приложении, и она прекрасно работает.Теперь я должен собрать это вместе.Как я мог заставить моего провайдера аутентификации jdbc не выполнять аутентификацию , а только загружать права доступа и включать следующий аутентификатор-менеджер для того, чтобы (в моем случае, LDAP-аутентификатор) выполнял настоящую аутентификацию?

1 Ответ

2 голосов
/ 25 октября 2011

Вам необходимо реализовать свой собственный поставщик аутентификации, но, конечно, вы можете повторно использовать DaoAuthenticationProvider и провайдера аутентификации LDAP.

Кстати: авторизационная часть провайдера аутентификации Ldap выполняется в LdapAuthoritiesPopulator.

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