0

我想检索存储在 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 个连接。另外,我需要确保我有一个可以 search() 的唯一而不是 null 属性。

4

2 回答 2

0

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

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

于 2015-12-14T21:06:41.497 回答
0

只需查找 DN。结果DirContext应该getNameInNamespace()在正确的情况下。

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

于 2015-12-14T21:44:42.623 回答