2011-06-18 49 views
5

Tôi đang cố gắng sử dụng xác thực LDAP Spring Security 3.0.2 cho một trang web JSF. Khi tôi sử dụng cấu hình bên dưới trong applicationContext-security.xml, tôi nhận được ngoại lệ này - org.springframework.beans.factory.BeanCreationException: Lỗi khi tạo bean có tên 'org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices # 0' : Khởi tạo đậu không thành công; ngoại lệ lồng nhau là org.springframework.context.ApplicationContextException: Không có UserDetailsService nào được đăng ký.Ngoại lệ LDAP mùa xuân - Không có UserDetailsService nào đã đăng ký

<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="" /> 

Tôi vừa thử nghiệm và nhận thấy rằng việc thêm vào bên dưới giúp mọi thứ hoạt động.

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

Nhưng tôi không thể tìm thấy tham chiếu đến điều này trong Spring LDAP documentation. Tại sao tôi nhận được ngoại lệ trên nếu tôi không thêm điều này? Tôi không hài lòng với cách giải quyết này vì tôi cần viết thuộc tính bộ lọc tìm kiếm người dùng ở hai nơi.

PS: Tôi đã kiểm tra Spring Security LDAP - No UserDetailsService registered. Có ngoại lệ khác và tôi đoán phiên bản Spring Security cũng khác.

Trả lời

8

Tôi nghi ngờ bạn có <remember-me/> đặt sau trong ngữ cảnh bảo mật. Theo tài liệu: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#remember-me

Nếu bạn đang sử dụng một nhà cung cấp chứng thực mà không sử dụng một UserDetailsService (ví dụ, các nhà cung cấp LDAP) sau đó nó sẽ không làm việc trừ khi bạn cũng có một bean UserDetailsService trong ứng dụng của bạn ngữ cảnh.

Các vấn đề liên quan