LdapConfig.java
package io.featureprobe.api.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
import java.util.Collections;
@Configuration
public class LdapConfig {
@Value("${app.security.ldap.url:ldap://ldap.forumsys.com:389}")
private String ldapUrl;
@Value("${app.security.ldap.base:dc=example,dc=com}")
public String ldapBase ;
@Value("${app.security.ldap.userDn:cn=read-only-admin,dc=example,dc=com}")
private String ldapUserDn;
@Value("${app.security.ldap.password:password}")
private String ldapPassword;
@Value("${app.security.ldap.connect.timeout:5000}")
private String connectTimeout;
@Value("${app.security.ldap.request.timeout:5000}")
private int requestTimeout;
@Value("${app.security.ldap.usernameAttribute:uid}")
private String usernameAttribute;
@Bean
public LdapContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl(ldapUrl);
contextSource.setUserDn(ldapUserDn);
contextSource.setPassword(ldapPassword);
contextSource.setBase(ldapBase);
contextSource.setBaseEnvironmentProperties(
Collections.singletonMap("com.sun.jndi.ldap.connect.timeout", connectTimeout)
);
contextSource.afterPropertiesSet();
return contextSource;
}
@Bean
public LdapTemplate ldapTemplate() {
LdapTemplate ldapTemplate = new LdapTemplate(contextSource());
ldapTemplate.setDefaultTimeLimit(requestTimeout);
ldapTemplate.setIgnorePartialResultException(true);
return ldapTemplate;
}
@Bean
public String ldapUsernameAttribute() {
return usernameAttribute;
}
}