Spring LDAP исключение - UserDetailsService не зарегистрирован - PullRequest
5 голосов
/ 19 июня 2011

Я пытаюсь использовать аутентификацию Spring Security 3.0.2 LDAP для веб-сайта JSF.Когда я использую приведенную ниже конфигурацию в applicationContext-security.xml, я получаю это исключение - org.springframework.beans.factory.BeanCreationException: Ошибка при создании бина с именем 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices #0 ': инициализация компонента не удалась;Вложенное исключение - org.springframework.context.ApplicationContextException: UserDetailsService не зарегистрирован.

<authentication-manager>
    <ldap-authentication-provider
        user-search-filter="(uid={0})" user-search-base="ou=users,ou=system"
        group-search-base="ou=groups,ou=system">
    </ldap-authentication-provider>
</authentication-manager>

<ldap-server id="ldapServer" url="ldap://localhost:10389"
    root="" />

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

<ldap-user-service server-ref="ldapServer" user-search-filter="(uid={0})" />

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

PS : я проверил Spring Security LDAP - UserDetailsService не зарегистрирован .Там исключение другое, и я думаю, что версия Spring Security также отличается.

1 Ответ

9 голосов
/ 08 мая 2012

Я подозреваю, что вы установили <remember-me/> позже в контексте безопасности.Согласно документации: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#remember-me

Если вы используете провайдер аутентификации, который не использует UserDetailsService (например, провайдер LDAP), то он не будет работать, если у вас также нет UserDetailsServicebean в контексте вашего приложения.

...