Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect with Java into Active Directory

I am using Weblogic, Ejb3.0. Java 1.6

I need to access Active Directory via Java code. I read about several ways (Kerberos, LDAP)

Anyone could advice me on comfortable way of doing so? where could I have some full code examples,

thanks, ray.

like image 372
rayman Avatar asked Dec 18 '11 12:12

rayman


People also ask

How does LDAP integrate with Java?

To connect to an LDAP server, we first need to create a JNDI InitialDirContext object. When doing so, we need to pass environment properties into its constructor as a Hashtable to configure it. Amongst others, we need to add properties to this Hashtable for the user name and password that we wish to authenticate with.


1 Answers

Here is a simple code that authenticate and make an LDAP search usin JNDI on a W2K3 :

class TestAD {   static DirContext ldapContext;   public static void main (String[] args) throws NamingException   {     try     {       System.out.println("Début du test Active Directory");        Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);       ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");       //ldapEnv.put(Context.PROVIDER_URL,  "ldap://societe.fr:389");       ldapEnv.put(Context.PROVIDER_URL,  "ldap://dom.fr:389");       ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");       //ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=administrateur,cn=users,dc=societe,dc=fr");       ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=jean paul blanc,ou=MonOu,dc=dom,dc=fr");       ldapEnv.put(Context.SECURITY_CREDENTIALS, "pwd");       //ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");       //ldapEnv.put(Context.SECURITY_PROTOCOL, "simple");       ldapContext = new InitialDirContext(ldapEnv);        // Create the search controls                SearchControls searchCtls = new SearchControls();        //Specify the attributes to return       String returnedAtts[]={"sn","givenName", "samAccountName"};       searchCtls.setReturningAttributes(returnedAtts);        //Specify the search scope       searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);        //specify the LDAP search filter       String searchFilter = "(&(objectClass=user))";        //Specify the Base for the search       String searchBase = "dc=dom,dc=fr";       //initialize counter to total the results       int totalResults = 0;        // Search for objects using the filter       NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);        //Loop through the search results       while (answer.hasMoreElements())       {         SearchResult sr = (SearchResult)answer.next();          totalResults++;          System.out.println(">>>" + sr.getName());         Attributes attrs = sr.getAttributes();         System.out.println(">>>>>>" + attrs.get("samAccountName"));       }        System.out.println("Total results: " + totalResults);       ldapContext.close();     }     catch (Exception e)     {       System.out.println(" Search error: " + e);       e.printStackTrace();       System.exit(-1);     }   } } 
like image 128
JPBlanc Avatar answered Oct 03 '22 12:10

JPBlanc