Showing posts with label Java to search user in active directory. Show all posts
Showing posts with label Java to search user in active directory. Show all posts

Java for searching a user's dn from all the users in active directory

search a user's dn from all the users in active directory and user memberOf

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class ADTest {
    public static void main(String[] args) {
        Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://ad.example.com:389");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "cn=Administrator,cn=Users,dc=ad,dc=example,dc=com");
        env.put(Context.SECURITY_CREDENTIALS, "password");
        try {
            DirContext ctx = new InitialDirContext(env);
            SearchControls searchControls = new SearchControls();
            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
            String searchFilter = "(&(objectClass=user)(sAMAccountName=testuser))";
            String searchBase = "dc=ad,dc=example,dc=com";
            NamingEnumeration<SearchResult> results = ctx.search(searchBase, searchFilter, searchControls);
            SearchResult searchResult = null;
            if (results.hasMoreElements()) {
                searchResult = (SearchResult) results.nextElement();
                Attributes attrs = searchResult.getAttributes();
                Attribute attr = attrs.get("memberOf");
                for (int i = 0; i < attr.size(); i++) {
                    String groupDN = (String) attr.get(i);
                    System.out.println(groupDN);
                }
            }
            ctx.close();
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}

Basic Perfomance Tuning For stuck threads and response times

Documentation for performance tuning: https://docs.oracle.com/en/middleware/fusion-middleware/12.2.1.4/asper/redundant-cross-references-remo...