2014-02-06 78 views
4

我有一個Web應用程序。對於LDAP,我正在使用Apache指令工作室。 我想讓我的應用程序中的所有用戶和他們的角色。使用Java從LDAP檢索所有用戶及其角色

我能夠通過使用以下代碼獲取特定信息。

import java.util.Properties; 
    import javax.naming.Context; 
    import javax.naming.NamingException; 
    import javax.naming.directory.Attributes; 
    import javax.naming.directory.DirContext; 
    import javax.naming.directory.InitialDirContext; 

    public class DirectorySample { 
     public DirectorySample() { 

     } 

     public void doLookup() { 
      Properties properties = new Properties(); 
      properties.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.sun.jndi.ldap.LdapCtxFactory"); 
      properties.put(Context.PROVIDER_URL, "ldap://localhost:10389"); 
      try { 
       DirContext context = new InitialDirContext(properties); 
       Attributes attrs = context.getAttributes("dc=example,dc=com"); 
       System.out.println("ALL Data: " + attrs.toString()); 
      } catch (NamingException e) { 
       e.printStackTrace(); 
      } 
     } 
     public static void main(String[] args) { 
      DirectorySample sample = new DirectorySample(); 
      sample.doLookup(); 
     } 

    } 

enter image description here
我想告訴所有的用戶和角色列表,所以我需要改變查詢或其他 感謝東西進展。

+0

(1)您發佈的代碼沒有做任何檢索特定用戶數據的事情。它檢索「dc = example,dc = com」的屬性,根本不是用戶條目。 (2)檢索所有用戶的數據是一個潛在的巨大查詢。你爲什麼認爲你需要這樣做? – EJP

+0

好吧..我想要所有用戶和角色。 你可以建議我查詢...對於@EJP –

+0

查詢取決於你如何定義你的DIT,你已經提供了零信息。例如,你爲用戶使用了什麼objectClass? – EJP

回答

1

您可以使用org.apache.directory.ldap.client.api.LdapConnection輕鬆搜索。

綁定連接後,請在連接上進行搜索。循環遊標以獲取所需的對象。第一個參數應該與您的父用戶的DN相匹配。下面的例子只是給你一個想法。

EntryCursor cursor = connection.search("ou=users, dc=example, dc=com", "(objectclass=*)", SearchScope.ONELEVEL, "*"); 

    while (cursor.next()) 
    { 
     Entry entry = cursor.get(); 
      //play with the entry 
    } 
相關問題