我的Active目录中的用户使用电子邮件地址“firstname.lastname@company.no”或全名“firstname lastname”登录其帐户。 AD域是'company.local'。
问题是,当Spring执行LDAP查询时,它会搜索“firstname lastname@company.local”。并没有给出任何匹配。我可以通过将帐户的upn-suffix更改为.local来省略错误,但这不是生产的选项。
如何配置Spring Boot以不在查询中附加域?
使用Spring Security配置Spring Boot,并进行以下设置(遵循this教程)。
相关配置:
@configuration
public class MyWebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Bean
public AuthenticationProvider activeDirectoryAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("company.local","ldap://domaincontroller:389");
provider.setSearchFilter("(cn={0})");
return provider;
}
}
答案 0 :(得分:0)
我通过使用ActiveDirectoryLdapAuthenticationProvider的另一个构造函数,将域字符串设置为空并添加rootDN来自己想出来:
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("","ldap://domaincontroller:389","DC=company,DC=local");