2014-10-08 39 views
-1

我想從LDAP獲取所有sAMAccountName賦名單LDAP,下面是一個使用的samAccountName列出所有sAMAccountName賦使用Java

public static void searchUserFromLdap(String samAccountName) throws Exception{ 

    SearchResult searchResult = ldapConnection.search("CN=XX,DC=XX,DC=XX", SearchScope.SUB, "(sAMAccountName=" + samAccountName +")"); 

    if(searchResult.getSearchEntries().size()<=0){ 
     System.out.println("No such user found in LDAP"); 
     return; 
    } 

    System.out.println("Start :- LDAP attributes for given user\n"); 
    for(SearchResultEntry searchResultEntry : searchResult.getSearchEntries()){ 

     System.out.println(searchResultEntry.toLDIFString()); 
    } 

    System.out.println("\nEnd :- LDAP attributes for given user"); 

} 

這種方法接受給我的用戶的LDAP屬性的方法samAccountName並返回用戶的ldap屬性 我想獲取所有samAccountName的列表,我已經搜索了這個,但我沒有得到任何相關的,任何人都可以請告訴我如何獲得sAMAccountName的列表。

回答

1

我不確定ldapConnection是什麼。是從unboundid開始的嗎?

無論從方法的外觀來看,第三個參數是您的LDAP搜索過濾器。你可以簡單地改變這種過濾器是以下幾點:

(objectClass=user) 

所以方法調用將是:

SearchResult searchResult = ldapConnection.search(
     "CN=XX,DC=XX,DC=XX", 
     SearchScope.SUB, 
     "(objectClass=user)"); 

SearchResult則包含CN=XX,DC=XX,DC=XX下找到的所有用戶。

如果它來自unboundid,那麼您可以添加第4個參數來定義您只希望爲每個結果返回sAMAccountName ldap屬性。因此,這將是:

SearchResult searchResult = ldapConnection.search(
     "CN=XX,DC=XX,DC=XX", 
     SearchScope.SUB, 
     "(objectClass=user)", 
     "sAMAccountName"); 

有關LDAP搜索篩選器,查看以下資源的詳細信息: http://docs.oracle.com/cd/E19528-01/819-0997/gdxpo/index.html

+0

你說得對我的答案,我忘了過濾對象類。好答案。 – Ashigore 2014-10-08 11:46:51

+0

你最好使用'objectCategory' [而不是objectClass](http://msdn.microsoft.com/en-us/library/ms677612%28v=vs.85%29.aspx)。 – Petesh 2014-10-08 13:30:52

0

我不知道,因爲我還沒有嘗試過上面的帖子,但是看完後oracle文檔http://docs.oracle.com/cd/E19957-01/816-6402-10/search.htm我修改了我的搜索查詢和它的工作,這是我做的

public static void getListOfAllSamAccountName() throws Exception { 
    List<String> samAccountNameList = null; 
    SearchResult searchResult = ldapConnection.search(
      "CN=XX,DC=XX,DC=xx", SearchScope.SUB, 
      "(sAMAccountName=*)"); 

    if (searchResult.getSearchEntries().size() <= 0) { 
     System.out.println("No such user found in LDAP"); 
     return; 
    } 
    samAccountNameList = new ArrayList<String>(); 
    System.out.println("Start :- LDAP attributes for given user\n"); 
    for (SearchResultEntry searchResultEntry : searchResult 
      .getSearchEntries()) { 
     Attribute attribute = searchResultEntry 
       .getAttribute("sAMAccountName"); 
     String samAccountName = attribute.getValue(); 

     samAccountNameList.add(samAccountName); 

    } 

    if (samAccountNameList != null) { 
     System.out 
       .println("*******************************List of Same account Name******************************"); 
     for (String samAccountName : samAccountNameList) { 

      System.out.println(samAccountName); 
     } 
    } 

    System.out.println("\nEnd :- LDAP attributes for given user"); 

} 
相關問題