已连接LDAP但未知结构,如何查找baseDn?
如何查找LDAP的baseDn
首先你代码里的过滤条件写错了——organizationalUnits是复数,正确的objectClass是单数的organizationalUnit,而且空baseDn在部分LDAP服务器里会被限制,这可能是你没拿到结果的原因。
下面给你几个实用的方法找baseDn:
- 用LDAP可视化工具(比如Apache Directory Studio):连接上服务器后,直接看根节点的DN,一眼就能找到,这是最省心的方式。
- 从域名反推:如果你的LDAP绑定的域名是
example.com,那baseDn大概率是dc=example,dc=com;要是内部域是corp.example.org,就试试dc=corp,dc=example,dc=org。 - 尝试根节点搜索(需服务器允许):调整代码的搜索范围和过滤条件,比如用
(objectClass=*)搜索所有条目,范围设为SUBTREE_SCOPE,代码示例:
SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); final NamingEnumeration<SearchResult> result = context.search( "", "(objectClass=*)", controls); while (result.hasMore()) { SearchResult sr = result.next(); System.out.println("条目DN: " + sr.getNameInNamespace()); }
运行后看输出的顶层条目,就能推测出baseDn。
- 问管理员或者查服务器文档:这是最靠谱的,毕竟LDAP的结构是管理员配置的,直接问能少走弯路。
内容的提问来源于stack exchange,提问作者Filip Klokočník
相关产品推荐
相关产品推荐

