我在搜索 LDAP 时遇到问题。如果我使用以下代码,我可以使用以下代码获得级别 2。 但我想得到4级物体。感谢您的任何帮助。
当前搜索库:ou=HQ2-BR
,过滤器:"(ou=*)";
问候, 文柏康, 戴夫 [email protected] [email protected]
LDAP结构
- o=com,dc=rabbitforever #(级别 0)
- ou=HQ2-BR//引用其他广告 #(级别 1)
- ou=TSB//#(级别 2)
- ou=BM1//#(级别 2)
- ou=IIC//#(级别 2)
- ou=People//#(级别 3)
- uid=IICCIO//#(级别 4)
- uid=IICSIO1//#(级别 4)
- ou=People//#(级别 3)
- ou=HQ2-BR//引用其他广告 #(级别 1)
代码:
public void loopLDAP() {
String adminName = "uid=writer,ou=People,o=com,dc=rabbitforever";
String adminPassword = "password";
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
//env.put(Context.PROVIDER_URL,
// "ldap://192.168.1.127:389/dc=rabbitforever,dc=com");
env.put(Context.PROVIDER_URL,
"ldap://10.10.176.156:389/o=com,dc=rabbitforever");
//env.put(Context.SECURITY_AUTHENTICATION, "none");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.REFERRAL, "follow");
try {
LdapContext ctx = new InitialLdapContext(env, null);
ctx.setRequestControls(null);
String filter = "(ou=*)";
NamingEnumeration<?> namingEnum = ctx.search("ou=HQ2-BR", filter,
getSimpleSearchControls());
while (namingEnum.hasMore()) {
SearchResult result = (SearchResult) namingEnum.next();
Attributes attrs = result.getAttributes();
String cn = "";
String sn = "";
String description = "";
String uid = "";
if (null != attrs.get(cn)) {
cn = attrs.get("cn").toString();
}
if (null != attrs.get("sn")) {
sn = attrs.get("sn").toString();
}
if (null != attrs.get("description")) {
description = attrs.get("description").toString();
}
if (null != attrs.get("uid")) {
uid = attrs.get("uid").toString();
}
System.out.println(cn + " | " + sn + " | " + description
+ " | " + uid);
}
} catch (Exception ex) {
ex.printStackTrace();
}
} // end loopLDAP()
最佳答案
您可能需要使用 SearchControls.SUBTREE_SCOPE
构造 SearchControls
对象,并将其传递给 ctx.search
方法。请参阅example来自另一个答案。
关于jndi - LDAP JNDI 子树搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994497/