我想检索存储在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个连接。另外,我需要确保我有一个唯一的非空属性我可以搜索()。
答案 0 :(得分:0)
让我用我找到的解决方案回答我的问题。
它涉及search()函数,其中name参数(搜索上下文)应该是DN,查询过滤器是空的或类似(objectClass = *)。然后它返回一行,对应于被搜索的DN。然后在SearchResult中提供原始DN。
答案 1 :(得分:0)
只需查找DN即可。生成的DirContext
在正确的情况下应该有getNameInNamespace()
。
搜索也可以,但效率低,代码更多。