How do a LDAP search/authenticate against this LDAP in Java

前端 未结 3 379
一生所求
一生所求 2020-12-02 05:57

I am playing with LDAP and Java search. Here\'s my LDIF export with a simple organization

version: 1

dn: dc=example,dc=com
objectClass: organization
objectC         


        
3条回答
  •  借酒劲吻你
    2020-12-02 06:38

    Another approach is using UnboundID. Its api is very readable and shorter

    Create a Ldap Connection

    public static LDAPConnection getConnection() throws LDAPException {
        // host, port, username and password
        return new LDAPConnection("com.example.local", 389, "Administrator@com.example.local", "admin");
    }
    

    Get filter result

    public static List getResults(LDAPConnection connection, String baseDN, String filter) throws LDAPSearchException {
        SearchResult searchResult;
    
        if (connection.isConnected()) {
            searchResult = connection.search(baseDN, SearchScope.ONE, filter);
    
            return searchResult.getSearchEntries();
        }
    
        return null;
    }
    

    Get all Oragnization Units and Containers

    String baseDN = "DC=com,DC=example,DC=local";
    String filter = "(&(|(objectClass=organizationalUnit)(objectClass=container)))";
    
    LDAPConnection connection = getConnection();        
    List results = getResults(connection, baseDN, filter);
    

    Get a specific Organization Unit

    String baseDN = "DC=com,DC=example,DC=local";
    String dn = "CN=Users,DC=com,DC=example,DC=local";
    
    String filterFormat = "(&(|(objectClass=organizationalUnit)(objectClass=container))(distinguishedName=%s))";
    String filter = String.format(filterFormat, dn);
    
    LDAPConnection connection =  getConnection();
    
    List results = getResults(connection, baseDN, filter);
    

    Get all users under an Organizational Unit

    String baseDN = "CN=Users,DC=com,DC=example,DC=local";
    String filter = "(&(objectClass=user)(!(objectCategory=computer)))";
    
    LDAPConnection connection =  getConnection();       
    List results = getResults(connection, baseDN, filter);
    

    Get a specific user under an Organization Unit

    String baseDN = "CN=Users,DC=com,DC=example,DC=local";
    String userDN = "CN=abc,CN=Users,DC=com,DC=example,DC=local";
    
    String filterFormat = "(&(objectClass=user)(distinguishedName=%s))";
    String filter = String.format(filterFormat, userDN);
    
    LDAPConnection connection =  getConnection();
    List results = getResults(connection, baseDN, filter);
    

    Display result

    for (SearchResultEntry e : results) {
        System.out.println("name: " + e.getAttributeValue("name"));
    }
    

提交回复
热议问题