2011-06-18 2 views
5

Я пытаюсь использовать 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.Исключение Spring LDAP - нет 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 documentation. Почему я получаю исключение выше, если я не добавляю это? Я не доволен этим обходным путем, так как мне нужно написать атрибут user-search-filter в двух местах.

PS: Я проверил Spring Security LDAP - No UserDetailsService registered. Там исключение отличается, и я полагаю, что версия Spring Security отличается.

ответ

8

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

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

Смежные вопросы