Class LdapUserDetailsManager
- All Implemented Interfaces:
org.springframework.security.core.userdetails.UserDetailsService,org.springframework.security.provisioning.UserDetailsManager
It is designed around a standard setup where users and groups/roles are stored under separate contexts, defined by the "userDnBase" and "groupSearchBase" properties respectively.
In this case, LDAP is being used purely to retrieve information and this class can be used in place of any other UserDetailsService for authentication. Authentication isn't performed directly against the directory, unlike with the LDAP authentication provider setup.
- Since:
- 2.0
-
Constructor Summary
ConstructorsConstructorDescriptionLdapUserDetailsManager(org.springframework.ldap.core.ContextSource contextSource) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddAuthorities(org.springframework.ldap.core.DistinguishedName userDn, Collection<? extends org.springframework.security.core.GrantedAuthority> authorities) protected org.springframework.ldap.core.DistinguishedNamebuildGroupDn(String group) Creates a DN from a group name.voidchangePassword(String oldPassword, String newPassword) Changes the password for the current user.protected voidcopyToContext(org.springframework.security.core.userdetails.UserDetails user, org.springframework.ldap.core.DirContextAdapter ctx) voidcreateUser(org.springframework.security.core.userdetails.UserDetails user) voiddeleteUser(String username) org.springframework.security.core.userdetails.UserDetailsloadUserByUsername(String username) protected voidremoveAuthorities(org.springframework.ldap.core.DistinguishedName userDn, Collection<? extends org.springframework.security.core.GrantedAuthority> authorities) voidsetAttributesToRetrieve(String[] attributesToRetrieve) voidsetGroupMemberAttributeName(String groupMemberAttributeName) Sets the name of the multi-valued attribute which holds the DNs of users who are members of a group.voidsetGroupRoleAttributeName(String groupRoleAttributeName) voidsetGroupSearchBase(String groupSearchBase) voidsetPasswordAttributeName(String passwordAttributeName) voidsetRoleMapper(org.springframework.ldap.core.AttributesMapper roleMapper) voidsetSecurityContextHolderStrategy(org.springframework.security.core.context.SecurityContextHolderStrategy securityContextHolderStrategy) Sets theSecurityContextHolderStrategyto use.voidsetUsePasswordModifyExtensionOperation(boolean usePasswordModifyExtensionOperation) Sets the method by which a user's password gets modified.voidsetUserDetailsMapper(UserDetailsContextMapper userDetailsMapper) voidsetUsernameMapper(LdapUsernameToDnMapper usernameMapper) voidupdateUser(org.springframework.security.core.userdetails.UserDetails user) booleanuserExists(String username)
-
Constructor Details
-
LdapUserDetailsManager
public LdapUserDetailsManager(org.springframework.ldap.core.ContextSource contextSource)
-
-
Method Details
-
loadUserByUsername
public org.springframework.security.core.userdetails.UserDetails loadUserByUsername(String username) - Specified by:
loadUserByUsernamein interfaceorg.springframework.security.core.userdetails.UserDetailsService
-
changePassword
Changes the password for the current user. The username is obtained from the security context. There are two supported strategies for modifying the user's password depending on the capabilities of the corresponding LDAP server.Configured one way, this method will modify the user's password via the LDAP Password Modify Extended Operation . See
setUsePasswordModifyExtensionOperation(boolean)for details.By default, though, if the old password is supplied, the update will be made by rebinding as the user, thus modifying the password using the user's permissions. If
oldPasswordis null, the update will be attempted using a standard read/write context supplied by the context source.- Specified by:
changePasswordin interfaceorg.springframework.security.provisioning.UserDetailsManager- Parameters:
oldPassword- the old passwordnewPassword- the new value of the password.
-
createUser
public void createUser(org.springframework.security.core.userdetails.UserDetails user) - Specified by:
createUserin interfaceorg.springframework.security.provisioning.UserDetailsManager
-
updateUser
public void updateUser(org.springframework.security.core.userdetails.UserDetails user) - Specified by:
updateUserin interfaceorg.springframework.security.provisioning.UserDetailsManager
-
deleteUser
- Specified by:
deleteUserin interfaceorg.springframework.security.provisioning.UserDetailsManager
-
userExists
- Specified by:
userExistsin interfaceorg.springframework.security.provisioning.UserDetailsManager
-
buildGroupDn
Creates a DN from a group name.- Parameters:
group- the name of the group- Returns:
- the DN of the corresponding group, including the groupSearchBase
-
copyToContext
protected void copyToContext(org.springframework.security.core.userdetails.UserDetails user, org.springframework.ldap.core.DirContextAdapter ctx) -
addAuthorities
protected void addAuthorities(org.springframework.ldap.core.DistinguishedName userDn, Collection<? extends org.springframework.security.core.GrantedAuthority> authorities) -
removeAuthorities
protected void removeAuthorities(org.springframework.ldap.core.DistinguishedName userDn, Collection<? extends org.springframework.security.core.GrantedAuthority> authorities) -
setUsernameMapper
-
setPasswordAttributeName
-
setGroupSearchBase
-
setGroupRoleAttributeName
-
setAttributesToRetrieve
-
setUserDetailsMapper
-
setGroupMemberAttributeName
Sets the name of the multi-valued attribute which holds the DNs of users who are members of a group.Usually this will be uniquemember (the default value) or member.
- Parameters:
groupMemberAttributeName- the name of the attribute used to store group members.
-
setRoleMapper
public void setRoleMapper(org.springframework.ldap.core.AttributesMapper roleMapper) -
setUsePasswordModifyExtensionOperation
public void setUsePasswordModifyExtensionOperation(boolean usePasswordModifyExtensionOperation) Sets the method by which a user's password gets modified. If set totrue, thenchangePassword(java.lang.String, java.lang.String)will modify the user's password by way of the Password Modify Extension Operation. If set tofalse, thenchangePassword(java.lang.String, java.lang.String)will modify the user's password by directly modifying attributes on the corresponding entry. Before using this setting, ensure that the corresponding LDAP server supports this extended operation. By default,usePasswordModifyExtensionOperationis false.- Parameters:
usePasswordModifyExtensionOperation-- Since:
- 4.2.9
-
setSecurityContextHolderStrategy
public void setSecurityContextHolderStrategy(org.springframework.security.core.context.SecurityContextHolderStrategy securityContextHolderStrategy) Sets theSecurityContextHolderStrategyto use. The default action is to use theSecurityContextHolderStrategystored inSecurityContextHolder.- Since:
- 5.8
-