用适当的大小写检索JNDI dn

时间:2015-12-14 20:24:23

标签: ldap jndi dn

我想检索存储在LDAP服务器中的用户DN,保留原始字符大小写。例如,假设我服务器中的DN是" cn = Bob,o = MyOrg"。我想使用" cn = bob,o = myorg"来查询服务器。并检索原始" cn = Bob,o = MyOrg"作为结果。

DirContext.getAttributes(dn)方法可以返回一组属性,但这不包括DN本身。另一方面,DirContext.search()使用getNameInNamespace()返回具有此信息的SearchResult。不幸的是,搜索表达式似乎不允许搜索DN,这就是我所拥有的。

我知道我可以通过首先使用getAttributes()检索唯一属性来实现此目的,然后在search()中使用此属性值。但这导致2个连接。另外,我需要确保我有一个唯一的非空属性我可以搜索()。

2 个答案:

答案 0 :(得分:0)

让我用我找到的解决方案回答我的问题。

它涉及search()函数,其中name参数(搜索上下文)应该是DN,查询过滤器是空的或类似(objectClass = *)。然后它返回一行,对应于被搜索的DN。然后在SearchResult中提供原始DN。

答案 1 :(得分:0)

只需查找DN即可。生成的DirContext在正确的情况下应该有getNameInNamespace()

搜索也可以,但效率低,代码更多。