我正在尝试在用户目录中搜索用户(ou = users,ou = system),但我没有得到结果plz帮助我。 以下是我的搜索用户目录代码
public void search(String uid) {
String searchBase = "ou=users,ou=system";
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_CREDENTIALS, rootpass);
DirContext ctx = null;
try {
![enter image description here][1] // Create the initial directory context
ctx = new InitialDirContext(env);
// Create the search controls
SearchControls searchCtls = new SearchControls();
// Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtls.setReturningAttributes(new String[] { "uid", "cn" });
String searchFilter =" (uid="+uid+") ";//"(objectclass=*)"; //" (uid="+uid+") ";
// initialize counter to total the results
int totalResults = 0;
// Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter,
searchCtls);
while (answer.hasMore()) {
SearchResult sr = (SearchResult) answer.next();
totalResults++;
System.out.println(">>>" + sr.getName());
System.out.println(">>>");
}
} catch (NamingException e) {
e.printStackTrace();
}
}
这是我的目录结构
答案 0 :(得分:1)
您可能需要查看this sample。
答案 1 :(得分:1)
如果“没有打印任何东西,但是当我在任何其他目录中搜索它工作正常”时,可能归结为:
您无法连接到LDAP目录
您的搜索基础错误
您的过滤器错误
您正在搜索的记录不存在
您用于绑定的凭据无权在该位置进行搜索
其中一些会抛出NamingException,但其他人(例如“记录不存在”或“没有搜索权限”)将不会返回任何结果。
答案 2 :(得分:0)
就用户文件夹而言,答案在另一篇文章LDAP Directory Entry in .Net - not working with OU=Users
中这看似愚蠢和愚蠢,但Active Directory中的默认树设置是而不是OU =用户,dc =域,dc = com,而是 CN =用户 ,dc = domain,dc = com(注意CN =不是OU = for Users。