[英]Search across all subdomains in a ldapContext in Java
我已經用Java建立了一個LdapContext,並且正在尋找對其進行搜索。 我正在連接到根域為dc=fake,dc=domain,dc=com
的IP( ldap://1.1.1.20:389
)。 我正在嘗試驗證此服務器上的用戶,但是用戶分布在林中的多個域中。 我正在嘗試查詢根級別以搜索用戶的所有子域。
我已經找到本教程https://docs.oracle.com/javase/10/jmx/examples-lookup-ldap-client-java.htm#JSJMX-GUID-5BA2ADC5-5597-4F1D-BF53-F1A2C7DB6117和像在本教程中一樣,通過將我的LdapContext
為DirContext
來使用它來嘗試搜索根級別。
ctx = new InitialLdapContext(env, null);
DirContext root = (DirContext) (ctx.lookup(""));
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setTimeLimit(30000);
ctx.setRequestControls(null);
NamingEnumeration<?> namingEnum = root.search("", "(CN=Bob Test)", searchControls);
while (namingEnum.hasMore())
{
SearchResult result = (SearchResult) namingEnum.next();
Attributes attrs = result.getAttributes();
IDActive = true;
}
這將導致PartialResultException
。 我可以搜索特定的位置,但是我不知道如何從根目錄中適當地“滴答”我的搜索,以便它可以驗證任何子域中的用戶。 謝謝
如果您需要搜索整個AD林,則它就像連接到Global Catalog一樣容易。 就像更改您連接的端口一樣簡單(只要沒有防火牆阻止連接):
ldap://1.1.1.20:3268
全局編錄也使用LDAP協議,但是從整個林而不是僅從服務器的域返回結果。 有幾個警告:
如果您遇到任何一個問題,都可以從GC中獲取distinguishedName
,然后使用它通過常規LDAP綁定到對象以修改它或獲取所需的額外數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.