Java 搜索没有名称的上下文

Java 搜索没有名称的上下文,java,active-directory,ldap,Java,Active Directory,Ldap,我使用服务帐户连接到Active Directory,然后使用以下上下文搜索用户: String searchBase = "DC=extLDAP,DC=com"; String query = "(&(objectCategory=person)(objectClass=user)(SAMAccountName=batty))"; final SearchControls constraints = new SearchControls(); final NamingEnumerat

我使用服务帐户连接到Active Directory,然后使用以下上下文搜索用户:

String searchBase = "DC=extLDAP,DC=com";
String query = "(&(objectCategory=person)(objectClass=user)(SAMAccountName=batty))";
final SearchControls constraints = new SearchControls();

final NamingEnumeration<?> searchResults = dirContext.search(searchBase,searchQuery,constraints);
String searchBase=“DC=extLDAP,DC=com”;
字符串查询=“(&(objectCategory=person)(objectClass=user)(SAMAccountName=batty))”;
最终SearchControls约束=新的SearchControls();
final namingumeration searchResults=dirContext.search(searchBase、searchQuery、constraints);
但我有一个场景,searchBase没有给我。在这种情况下,我需要搜索完整的active directory

我尝试使用
searchBase=null
searchBase=“”
但在这两种情况下,我分别得到
NullPointerException
NameNotFoundException

是否有任何方法可以在不知道
searchBase
或域名的情况下搜索整个active directory


注意:我正在使用服务帐户的完整dn进行连接。因此,不知道具体的域名。

搜索库始终是域名根
DC=extLDAP,DC=com
-您无法在广告中搜索更多对象

但是,如果您事先不知道域根上下文,可以执行以下三项操作之一:

  • 使用rootDSE对象的查询解析域根上下文:
  • 使用AD的幻影根选项搜索整个域,而不指定上下文:
  • 使用DNS解析域详细信息:
当然,所有Microsoft示例都是C#或更糟的语言,但您应该能够将其转换为适当的Java