SpringBoot LDAPTemplate 嵌入式与真正的 LDAP
SpringBoot LDAPTemplate Embedded vs Real LDAP
我在我的 SpringBoot 应用程序中使用下面提到的属性,在 application.yml
文件中,在我的本地机器中有 LDAP 代码 运行。
spring:
ldap:
# Use this embedded configuration for local ldap testing
embedded:
base-dn: o=localcompany,c=US
credential:
username: uid=admin
password: secret
ldif: classpath:schemas.ldif
port: 12345
validation:
enabled: false
# Use this below configuration for Ford ldap
# urls: ldaps://mmm.mmm.com:754
# base-dn: o=****,c=US
# username:
# password: {your password goes here}
我想在我的应用程序中同时存在我的嵌入式配置和实际配置,以便它在本地以及在我的云环境中工作。但是即使在云环境中,我的 yml 文件中的嵌入式属性也会覆盖实际的属性。有没有办法同时拥有这两个属性,然后根据环境,连接 LDAPTemplate
我使用 @profile
注释配置了我的 LDAPTemplate,它可以区分本地和服务器环境,并实现了我上面的要求。下面是我的配置。对于本地环境,具有 embedded-properties 足以使 LDAPTemplate
正确连接
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
@Configuration
@Profile("cloud")
public class LDAPConfiguration {
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.base}")
private String ldapBase;
@Value("${ldap.username}")
private String ldapUser;
@Value("${ldap.password}")
private String ldapPassword;
@Bean
public LdapTemplate configureLdapTemplateForCloud() {
return new LdapTemplate(contextSource()) ;
}
private LdapContextSource contextSource() {
LdapContextSource ldapContextSource = new LdapContextSource();
ldapContextSource.setUrl(ldapUrl);
ldapContextSource.setBase(ldapBase);
ldapContextSource.setUserDn(ldapUser);
ldapContextSource.setPassword(ldapPassword);
ldapContextSource.afterPropertiesSet();
return ldapContextSource;
}
}
所以现在,当我在本地 运行 时,Spring 启动将使用我的嵌入式 LDAP,但在云配置文件中,它将执行实际的 LDAP 服务器。
谢谢
A运行
我在我的 SpringBoot 应用程序中使用下面提到的属性,在 application.yml
文件中,在我的本地机器中有 LDAP 代码 运行。
spring:
ldap:
# Use this embedded configuration for local ldap testing
embedded:
base-dn: o=localcompany,c=US
credential:
username: uid=admin
password: secret
ldif: classpath:schemas.ldif
port: 12345
validation:
enabled: false
# Use this below configuration for Ford ldap
# urls: ldaps://mmm.mmm.com:754
# base-dn: o=****,c=US
# username:
# password: {your password goes here}
我想在我的应用程序中同时存在我的嵌入式配置和实际配置,以便它在本地以及在我的云环境中工作。但是即使在云环境中,我的 yml 文件中的嵌入式属性也会覆盖实际的属性。有没有办法同时拥有这两个属性,然后根据环境,连接 LDAPTemplate
我使用 @profile
注释配置了我的 LDAPTemplate,它可以区分本地和服务器环境,并实现了我上面的要求。下面是我的配置。对于本地环境,具有 embedded-properties 足以使 LDAPTemplate
正确连接
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
@Configuration
@Profile("cloud")
public class LDAPConfiguration {
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.base}")
private String ldapBase;
@Value("${ldap.username}")
private String ldapUser;
@Value("${ldap.password}")
private String ldapPassword;
@Bean
public LdapTemplate configureLdapTemplateForCloud() {
return new LdapTemplate(contextSource()) ;
}
private LdapContextSource contextSource() {
LdapContextSource ldapContextSource = new LdapContextSource();
ldapContextSource.setUrl(ldapUrl);
ldapContextSource.setBase(ldapBase);
ldapContextSource.setUserDn(ldapUser);
ldapContextSource.setPassword(ldapPassword);
ldapContextSource.afterPropertiesSet();
return ldapContextSource;
}
}
所以现在,当我在本地 运行 时,Spring 启动将使用我的嵌入式 LDAP,但在云配置文件中,它将执行实际的 LDAP 服务器。
谢谢 A运行