Hi,
Just a mini-post concerning an utility class/helper in order to request LDAP/AD LDAPHelper:
package com.huo.lu.db.extract.ldap; import java.io.IOException; 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.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; import com.huo.lu.db.extract.AppConstant; /** * Helper in order to request LDAP/AD. */ public class LDAPHelper { private String ldapUrl = null; private String ldapBind = null; private String ldapPassword = null; private String searchOu = null; private String mfAgentSearchCriteria = null; private String phoneSearchCriteria = null; private String eMailSearchCriteria = null; private String nameSearchCriteria = null; private String adLoginSearchCriteria = null; private LdapContext ldapContext = null; private SearchControls searchCtls = null; public LDAPHelper(String ldapUrl, String ldapBind, String ldapPassword, String searchOu, String mfAgentSearchCriteria, String phoneSearchCriteria, String eMailSearchCriteria, String nameSearchCriteria, String adLoginSearchCriteria) throws NamingException, IOException { this.initLDAP(ldapUrl, ldapBind, ldapPassword, searchOu, mfAgentSearchCriteria, phoneSearchCriteria, eMailSearchCriteria, nameSearchCriteria, adLoginSearchCriteria); } private void initLDAP(String ldapUrl, String ldapBind, String ldapPassword, String searchOu, String mfAgentSearchCriteria, String phoneSearchCriteria, String eMailSearchCriteria, String nameSearchCriteria, String adLoginSearchCriteria) throws NamingException, IOException { this.ldapUrl = ldapUrl; this.ldapBind = ldapBind; this.ldapPassword = ldapPassword; this.searchOu = searchOu; this.mfAgentSearchCriteria = mfAgentSearchCriteria; this.phoneSearchCriteria = phoneSearchCriteria; this.eMailSearchCriteria = eMailSearchCriteria; this.nameSearchCriteria = nameSearchCriteria; this.adLoginSearchCriteria = adLoginSearchCriteria; if (this.ldapUrl != null && !this.ldapUrl.equals("")) { Hashtable<String, String> ldapEnvironment = new Hashtable<String, String>(5); ldapEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, AppConstant.INITIAL_CONTEXT_FACTORY); ldapEnvironment.put(Context.PROVIDER_URL, this.ldapUrl); ldapEnvironment.put(Context.SECURITY_AUTHENTICATION, AppConstant.SECURITY_AUTHENTICATION); ldapEnvironment.put(Context.SECURITY_PRINCIPAL, this.ldapBind); ldapEnvironment.put(Context.SECURITY_CREDENTIALS, this.ldapPassword); // Create initial context ldapContext = new InitialLdapContext(ldapEnvironment, null); searchCtls = new SearchControls(); searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); } } public void closeLDAP() throws NamingException { // Close the context when we're done ldapContext.close(); } public String query(String mfUserName, String ldapResAttr) throws NamingException { NamingEnumeration<SearchResult> answer = getUserAttributes(mfUserName); return getSearchResult(answer, ldapResAttr); } public NamingEnumeration<SearchResult> getUserAttributes(String mfUserName) throws NamingException { NamingEnumeration<SearchResult> answer = ldapContext.search(searchOu, "(" + mfAgentSearchCriteria + "=" + mfUserName + ")", searchCtls); return answer; } public String getSearchResult(NamingEnumeration<SearchResult> ldapAnswer, String ldapResAttr) throws NamingException { String result = null; while (ldapAnswer.hasMore() && (result == null || result.equals(""))) { SearchResult sr = (SearchResult) ldapAnswer.next(); Attributes attrs = sr.getAttributes(); Attribute dn = attrs.get(ldapResAttr); if (dn != null) { result = (String) dn.get(); } return result; } return result; } public String getSearchResult(Attributes attrs, String ldapResAttr) throws NamingException { String result = null; Attribute dn = attrs.get(ldapResAttr); if (dn != null) { result = (String) dn.get(); } return result; } public String getPhoneNumber(String mfUserName) throws NamingException { return query(mfUserName, phoneSearchCriteria); } public String getPhoneNumber(NamingEnumeration<SearchResult> userAttr) throws NamingException { return getSearchResult(userAttr, phoneSearchCriteria); } public String getEMail(String mfUserName) throws NamingException { return query(mfUserName, eMailSearchCriteria); } public String getEMail(NamingEnumeration<SearchResult> userAttr) throws NamingException { return getSearchResult(userAttr, eMailSearchCriteria); } public String getName(String mfUserName) throws NamingException { return query(mfUserName, nameSearchCriteria); } public String getName(NamingEnumeration<SearchResult> userAttr) throws NamingException { return getSearchResult(userAttr, nameSearchCriteria); } public void finalize() { try { this.closeLDAP(); } catch (NamingException e) { e.printStackTrace(); } } public NamingEnumeration<SearchResult> getUserAttributesFromADLogin(String adLogin) throws NamingException { NamingEnumeration<SearchResult> answer = ldapContext.search(searchOu, "(" + adLoginSearchCriteria + "=" + adLogin + ")", searchCtls); return answer; } }
That’s all!!!!
Huseyin OZVEREN