有些客户要求从我的应用中使用的域中获取搜索库。
例如,如果我的域的域控制器是ad.mydomain.com,则以下列方式构建serch基础是正确的:dc = ad,dc = mydomain,dc = com?
我不确定一旦域名更改,搜索库也必须更改,因为否则我的应用程序。不会工作得很好。
THX。
答案 0 :(得分:1)
通常是这种情况(至少在Active Directory的情况下)。我们为dev AD实例提供了dev.company.com,为prod AD实例提供了company.com,搜索库分别为dc = dev,dc = company,dc = com和dc = company,dc = com。
我在Spring Security的AD身份验证提供程序中看到了相同的做法。它从域名派生根DN,如下所示:
private String rootDnFromDomain(String domain) {
String[] tokens = StringUtils.tokenizeToStringArray(domain, ".");
StringBuilder root = new StringBuilder();
for (String token : tokens) {
if (root.length() > 0) {
root.append(',');
}
root.append("dc=").append(token);
}
return root.toString();
}
来源:Spring Security ActiveDirectoryLdapAuthenticationProvider.java的来源
答案 1 :(得分:1)
虽然可能存在在AD世界中使用dc=domain,dc=com
的约定,但确定目录服务器支持的命名上下文的正确方法是在根DSE中查询namingContexts
属性。列出的命名上下文是由服务器托管或隐藏的命名上下文。有关根DSE的更多信息,请参阅"LDAP: The root DSE"。请注意,服务器可能托管或隐藏多个命名上下文。另请参阅"LDAP: Programming Practices"。