Showing posts with label search user in ad. Show all posts
Showing posts with label search user in ad. 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...