1
0
mirror of synced 2026-08-07 02:38:47 +00:00

SEC-619: LdapUserDetailsService implementation.

This commit is contained in:
Luke Taylor
2007-12-07 13:16:44 +00:00
parent a569ff01e2
commit b12a4939df
@@ -0,0 +1,44 @@
package org.springframework.security.userdetails.ldap;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.ldap.LdapUserSearch;
import org.springframework.security.providers.ldap.LdapAuthoritiesPopulator;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UserDetailsService;
import org.springframework.security.userdetails.UsernameNotFoundException;
import org.springframework.ldap.core.DirContextOperations;
import org.springframework.util.Assert;
/**
* LDAP implementation of UserDetailsService based around an {@link LdapUserSearch}
* and an {@link LdapAuthoritiesPopulator}. The final <tt>UserDetails</tt> object
* returned from <tt>loadUserByUsername</tt> is created by the configured <tt>UserDetailsContextMapper</tt>.
*
* @author Luke Taylor
* @version $Id$
*/
public class LdapUserDetailsService implements UserDetailsService {
private LdapUserSearch userSearch;
private LdapAuthoritiesPopulator authoritiesPopulator;
private UserDetailsContextMapper userDetailsMapper = new LdapUserDetailsMapper();
public LdapUserDetailsService(LdapUserSearch userSearch, LdapAuthoritiesPopulator authoritiesPopulator) {
Assert.notNull(userSearch, "userSearch must not be null");
Assert.notNull(authoritiesPopulator, "authoritiesPopulator must not be null");
this.userSearch = userSearch;
this.authoritiesPopulator = authoritiesPopulator;
}
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
DirContextOperations userData = userSearch.searchForUser(username);
GrantedAuthority[] authorities = authoritiesPopulator.getGrantedAuthorities(userData, username);
return userDetailsMapper.mapUserFromContext(userData, username, authorities);
}
public void setUserDetailsMapper(UserDetailsContextMapper userDetailsMapper) {
Assert.notNull(userDetailsMapper, "userDetailsMapper must not be null");
this.userDetailsMapper = userDetailsMapper;
}
}