Java 搜索没有名称的上下文
我使用服务帐户连接到Active Directory,然后使用以下上下文搜索用户: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
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