I used to have following working code in old version of my application:
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
[...]
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
DefaultSpringSecurityContextSource contextSource =
new DefaultSpringSecurityContextSource(properties.getLdapServerUrl());
contextSource.afterPropertiesSet();
contextSource.setUrl(properties.getLdapServerUrl());
contextSource.setUserDn(properties.getManagerLogin());
contextSource.setPassword(properties.getManagerPassword());
auth.ldapAuthentication().userSearchFilter(properties.getUserSearchFilter())
.userSearchBase(properties.getUserSearchBase())
.groupSearchFilter(properties.getGroupSearchFilter())
.groupRoleAttribute(properties.getGroupRoleAttribute())
.ldapAuthoritiesPopulator(getCustomLdapAuthoritiesPopulatorBean())
.contextSource(contextSource);
}
Now, according to documentation I’ve changed it to:
public class SecurityConfiguration {
[...]
@Bean
AuthenticationManager ldapAuthenticationManager() {
DefaultSpringSecurityContextSource contextSource =
new DefaultSpringSecurityContextSource(properties.getLdapServerUrl());
contextSource.afterPropertiesSet();
contextSource.setUrl(properties.getLdapServerUrl());
contextSource.setUserDn(properties.getManagerLogin());
contextSource.setPassword(properties.getManagerPassword());
LdapBindAuthenticationManagerFactory factory = new LdapBindAuthenticationManagerFactory(contextSource);
factory.setUserSearchFilter(properties.getUserSearchFilter());
factory.setUserSearchBase(properties.getUserSearchBase());
/*
.groupSearchFilter(properties.getGroupSearchFilter())
.groupRoleAttribute(properties.getGroupRoleAttribute())
*/
factory.setLdapAuthoritiesPopulator(getCustomLdapAuthoritiesPopulatorBean());
return factory.createAuthenticationManager();
}
The factory class does not have methods that relate to ldap groups. So, how can I update my code so it can use my groupSearchFilter and groupRoleAttribute properties?