在绑定操作之后,我有一段代码在活动目录服务器上执行搜索。我正在使用 LDAP 协议进行绑定,我的代码如下所示:
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "none");
env.put("com.sun.jndi.ldap.read.timeout", "9000");
env.put("com.sun.jndi.ldap.connect.timeout", "9000");
env.put(Context.PROVIDER_URL, "ldap://" + "nec.jp");
DirContext ctx = new InitialDirContext(env);
NamingEnumeration<SearchResult> answer = ctx.search(
searchBase, searchFilter, searchCtls);
if (answer.hasMore())
{
env.put(Context.SECURITY_PRINCIPAL, principalNameres);
env.put(Context.SECURITY_CREDENTIALS, userPasswd);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
final DirContext ctxForSerachedResult = new InitialDirContext(
env);
ctxForSerachedResult.close();
}
我的问题是配置 AD 服务器以使用匿名登录用户执行搜索。
根据目前的理解,可以通过执行以下显示的步骤来启用匿名:
一个。通过更改 DsHeuristics 属性值启用匿名 LDAP 操作。
湾。提供读取目录的权限。
参考链接:
- http://social.technet.microsoft.com/Forums/en/winserverDS/thread/524a77fb-e819-497e-ae8a-c0fc43f1bba8
- http://support.microsoft.com/kb/326690
我曾尝试使用 LDP.exe 与匿名登录绑定来批准 Active Directory 设置,如下图所示:
但是搜索操作仍然无法按预期工作。
请建议我哪里出错了。