我所拥有的:
我在我的openldap设置中有如下层次结构。帐户'1-AA‘具有用户'Foo’。基本DN为
o=MyCompany,dc=sanjose,dc=corp,dc=company,dc=edu帐户直接位于基本DN下。
我想要的:
我想显示用户'Foo‘的帐户id (这里是1-AA)。
我所知道/尝试的:
使用标准java ldap搜索作为
env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldap://<host>:<port>/dc=sanjose,dc=corp,dc=company,dc=edu");
LdapContext ctx = new InitialLdapContext(env, null);
NamingEnumeration<?> namingEnum = ctx.search("o=MyCompany",
"(user=Foo)", getSimpleSearchControls());
//hasNext loop
SearchResult result = (SearchResult) namingEnum.next();
System.out.println(result.getNameInNamespace());现在的问题是,在上述情况下没有返回任何结果。但是如果我试图通过将搜索查询更改为获取帐户1-AA的DN
NamingEnumeration<?> namingEnum = ctx.search("o=MyCompany",
"(Account=1-AA)", getSimpleSearchControls());它工作得很好。
如何在此处获取父DN。在英语中,我只想说把while user=Foo的所有帐户In都给我。
发布于 2014-07-16 02:57:40
假设搜索(user=Foo)确实返回条目user=Foo,Account=1-AA,o=MyCompany,dc=sanjose,dc=corp,dc=company,dc=edu,那么javax.naming.ldap.LdapName可以帮助您完成剩下的工作。http://docs.oracle.com/javase/tutorial/jndi/newstuff/ldapname.html有一个从DN获取前缀或后缀的示例。
https://stackoverflow.com/questions/24734983
复制相似问题