簡體   English   中英

迭代LDAP搜索結果

[英]Iterate LDAP Search Result

我對Java LDAP API不太熟悉。 我在這里想要實現的是查詢一個OU下的所有組以及每個組下的用戶列表。

就像是

Group_1
g1_member_1 
g1_member_2 
g1_member_3
Group_2 
g2_member_1 
g2_member_2

等等

我正在使用以下代碼片段。 不知道我應該如何迭代搜索結果。

 String[] attrs = {"dn","cn","member"};
 SearchControls controls = new SearchControls();
 controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 controls.setReturningAttributes(attrs);
 NamingEnumeration<SearchResult> results = lContext.search(ou, "cn=*", controls);
 while (results.hasMore()){
  SearchResult result = results.next();
  System.out.println(result.getNameInNamespace());
 }

當前,當我打印result.getNameInNamespace() ,我得到了dn。 我對cn以及每個cn的成員都感興趣。

我應該在這里進行迭代搜索嗎? 對於返回的每個組,我是否會再次為用戶發起新搜索? 難道沒有辦法在一個查詢中全部得到嗎?

能夠通過以下更改進行操作。

 String[] attrs = {"dn","cn","member"};
 SearchControls controls = new SearchControls();
 controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 controls.setReturningAttributes(attrs);
 NamingEnumeration<SearchResult> results = lContext.search(ou, "(&(objectClass=group))", controls);
 while (results.hasMore()){
  SearchResult result = results.next();
  System.out.println(result.getNameInNamespace());
  Attributes attributes = result.getAttributes();
  System.out.println("DN "+result.getNameInNamespace());
  System.out.println("CN "+attributes.get("cn"));
  System.out.println("MEMBER "+attributes.get("member"));
  System.out.println("**********************");
 }

遍歷member屬性以分別處理每個用戶。

暫無
暫無

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

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