gpt4 book ai didi

java - 从 LDAP 目录上下文对象查找 BASE DN

转载 作者:行者123 更新时间:2023-12-02 08:08:44 25 4
gpt4 key购买 nike


我有 LDAP 的目录上下文,但我需要从中找出 BASE DN目录上下文对象。我有以下代码来获取目录上下文对象,

// Configure our directory context environment.
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://test.mycomp.com:389");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL,"uid=test.gen,OU=Generics,O=test.mycomp.com");
env.put(Context.SECURITY_CREDENTIALS, "test123");
DirContext dirContext = new InitialDirContext(env);
System.out.println("loaded dirContext");

我有以下代码来获取基本 DN,我一直在返回基本 DN 名称,但我想优化我的过滤器,而不是放置 2 个循环来获取基本 DN,

    SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.OBJECT_SCOPE);
NamingEnumeration results = dirContext.search("",
"(&(objectClass=organization)(objectClass=top))", constraints);

// Fail if no entries found
if (results == null || !results.hasMore()) {
System.out.println("No result found");
return;
}

while(results.hasMoreElements()){
Object res = results.next();
SearchResult serResult = (SearchResult) res;
Attributes atts = serResult.getAttributes();
System.out.println(atts.toString());
Attribute baseAttr = atts.get("namingContexts");
NamingEnumeration ids = baseAttr.getAll();
while(ids.hasMoreElements()){
Object obj = ids.next();
System.out.println(obj.toString());
}
}

请帮助我优化我的过滤器。

最佳答案

您不需要搜索。只需从InitialContext 中获取namingContexts 属性即可。

Attributes atttrs = context.getAttributes("", new String[]{"namingContexts"});

关于java - 从 LDAP 目录上下文对象查找 BASE DN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777067/

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