gpt4 book ai didi

java - 列出 LDAP 中的根上下文

转载 作者:行者123 更新时间:2023-11-30 07:37:28 25 4
gpt4 key购买 nike

我想列出或搜索 LDAP 树中的根上下文。我使用 Apache Directory Server 和 Java:

    Hashtable<String, String> contextParams = new Hashtable<String, String>();
contextParams.put("java.naming.provider.url", "ldap://localhost:10389");
contextParams.put("java.naming.security.principal", "uid=admin,ou=system");
contextParams.put("java.naming.security.credentials", "secret");
contextParams.put("java.naming.security.authentication", "simple");
contextParams.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");

DirContext dirContext = new InitialDirContext(contextParams);

NamingEnumeration<NameClassPair> resultList;

//Works
resultList = dirContext.list("ou=system");
while (resultList.hasMore()) {
NameClassPair result = resultList.next();
System.out.println(result.getName());
}

//Does not work
resultList = dirContext.list("");
while (resultList.hasMore()) {
NameClassPair result = resultList.next();
System.out.println(result.getName());
}

我可以列出 ou=system 的子节点。但是我无法列出实际根节点的子节点。我想要这个列表,就像 Apache Directory Studio 可以的那样: alt text http://lesc.se/stackoverflow/ldap_root_contexts.png

最佳答案

基本 DN 可以从根节点 (RootDSE) 的 namingContexts 属性中获取。代码应如下所示:

Attributes attributes = dirContext.getAttributes( "", new String[]{"namingContexts"} );
Attribute attribute = attributes.get( "namingContexts" );
NamingEnumeration<?> all = attribute.getAll();
while(all.hasMore())
{
String next = (String)all.next();
System.out.println(next);
}

关于java - 列出 LDAP 中的根上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com