簡體   English   中英

在Java的ldapContext中搜索所有子域

[英]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和像在本教程中一樣,通過將我的LdapContextDirContext來使用它來嘗試搜索根級別。

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協議,但是從整個林而不是僅從服務器的域返回結果。 有幾個警告:

  1. 您無法在GC上進行更改。
  2. 某些屬性未復制到GC(例如accountExpires )。 因此請注意,您無法通過常規LDAP在GC上獲得所有相同的數據。

如果您遇到任何一個問題,都可以從GC中獲取distinguishedName ,然后使用它通過常規LDAP綁定到對象以修改它或獲取所需的額外數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM