JavaBlog.fr / Java.lu DEVELOPMENT,Java,Tools Java : LDAP : Utility Class LDAPHelper

Java : LDAP : Utility Class LDAPHelper

Hi,

Just a mini-post concerning an utility class/helper in order to request LDAP/AD LDAPHelper:

001package com.huo.lu.db.extract.ldap;
002 
003import java.io.IOException;
004import java.util.Hashtable;
005 
006import javax.naming.Context;
007import javax.naming.NamingEnumeration;
008import javax.naming.NamingException;
009import javax.naming.directory.Attribute;
010import javax.naming.directory.Attributes;
011import javax.naming.directory.SearchControls;
012import javax.naming.directory.SearchResult;
013import javax.naming.ldap.InitialLdapContext;
014import javax.naming.ldap.LdapContext;
015 
016import com.huo.lu.db.extract.AppConstant;
017 
018/**
019 * Helper in order to request LDAP/AD.
020 */
021public class LDAPHelper {
022 
023    private String ldapUrl = null;
024    private String ldapBind = null;
025    private String ldapPassword = null;
026    private String searchOu = null;
027    private String mfAgentSearchCriteria = null;
028    private String phoneSearchCriteria = null;
029    private String eMailSearchCriteria = null;
030    private String nameSearchCriteria = null;
031    private String adLoginSearchCriteria = null;
032 
033    private LdapContext ldapContext = null;
034    private SearchControls searchCtls = null;
035 
036 
037    public LDAPHelper(String ldapUrl, String ldapBind, String ldapPassword, String searchOu,
038            String mfAgentSearchCriteria, String phoneSearchCriteria, String eMailSearchCriteria,
039            String nameSearchCriteria, String adLoginSearchCriteria) throws NamingException, IOException {
040 
041        this.initLDAP(ldapUrl, ldapBind, ldapPassword, searchOu, mfAgentSearchCriteria, phoneSearchCriteria,
042                eMailSearchCriteria, nameSearchCriteria, adLoginSearchCriteria);
043    }
044 
045     
046    private void initLDAP(String ldapUrl, String ldapBind, String ldapPassword, String searchOu,
047            String mfAgentSearchCriteria, String phoneSearchCriteria, String eMailSearchCriteria,
048            String nameSearchCriteria, String adLoginSearchCriteria) throws NamingException, IOException {
049 
050        this.ldapUrl = ldapUrl;
051        this.ldapBind = ldapBind;
052        this.ldapPassword = ldapPassword;
053        this.searchOu = searchOu;
054        this.mfAgentSearchCriteria = mfAgentSearchCriteria;
055        this.phoneSearchCriteria = phoneSearchCriteria;
056        this.eMailSearchCriteria = eMailSearchCriteria;
057        this.nameSearchCriteria = nameSearchCriteria;
058        this.adLoginSearchCriteria = adLoginSearchCriteria;
059         
060        if (this.ldapUrl != null && !this.ldapUrl.equals("")) {
061            Hashtable<String, String> ldapEnvironment = new Hashtable<String, String>(5);
062            ldapEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, AppConstant.INITIAL_CONTEXT_FACTORY);
063            ldapEnvironment.put(Context.PROVIDER_URL, this.ldapUrl);
064            ldapEnvironment.put(Context.SECURITY_AUTHENTICATION, AppConstant.SECURITY_AUTHENTICATION);
065            ldapEnvironment.put(Context.SECURITY_PRINCIPAL, this.ldapBind);
066            ldapEnvironment.put(Context.SECURITY_CREDENTIALS, this.ldapPassword);
067            // Create initial context
068            ldapContext = new InitialLdapContext(ldapEnvironment, null);
069            searchCtls = new SearchControls();
070            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
071        }
072    }
073 
074 
075         
076    public void closeLDAP() throws NamingException {
077        // Close the context when we're done
078        ldapContext.close();
079    }
080 
081    public String query(String mfUserName, String ldapResAttr) throws NamingException {
082        NamingEnumeration<SearchResult> answer = getUserAttributes(mfUserName);
083        return getSearchResult(answer, ldapResAttr);
084    }
085 
086    public NamingEnumeration<SearchResult> getUserAttributes(String mfUserName) throws NamingException {
087        NamingEnumeration<SearchResult> answer = ldapContext.search(searchOu, "(" + mfAgentSearchCriteria + "=" + mfUserName + ")", searchCtls);
088        return answer;
089    }
090 
091    public String getSearchResult(NamingEnumeration<SearchResult> ldapAnswer, String ldapResAttr) throws NamingException {
092        String result = null;
093        while (ldapAnswer.hasMore() && (result == null || result.equals(""))) {
094            SearchResult sr = (SearchResult) ldapAnswer.next();
095            Attributes attrs = sr.getAttributes();
096            Attribute dn = attrs.get(ldapResAttr);
097            if (dn != null) {
098                result = (String) dn.get();
099            }
100            return result;
101        }
102        return result;
103    }
104 
105    public String getSearchResult(Attributes attrs, String ldapResAttr) throws NamingException {
106        String result = null;
107        Attribute dn = attrs.get(ldapResAttr);
108        if (dn != null) {
109            result = (String) dn.get();
110        }
111        return result;
112    }
113     
114    public String getPhoneNumber(String mfUserName) throws NamingException {
115        return query(mfUserName, phoneSearchCriteria);
116    }
117 
118    public String getPhoneNumber(NamingEnumeration<SearchResult> userAttr) throws NamingException {
119        return getSearchResult(userAttr, phoneSearchCriteria);
120    }
121 
122    public String getEMail(String mfUserName) throws NamingException {
123        return query(mfUserName, eMailSearchCriteria);
124    }
125 
126    public String getEMail(NamingEnumeration<SearchResult> userAttr) throws NamingException {
127        return getSearchResult(userAttr, eMailSearchCriteria);
128    }
129 
130    public String getName(String mfUserName) throws NamingException {
131        return query(mfUserName, nameSearchCriteria);
132    }
133 
134    public String getName(NamingEnumeration<SearchResult> userAttr) throws NamingException {
135        return getSearchResult(userAttr, nameSearchCriteria);
136    }
137 
138    public void finalize() {
139        try {
140            this.closeLDAP();
141        } catch (NamingException e) {
142            e.printStackTrace();
143        }
144    }
145     
146     
147    public NamingEnumeration<SearchResult> getUserAttributesFromADLogin(String adLogin) throws NamingException {
148        NamingEnumeration<SearchResult> answer = ldapContext.search(searchOu, "(" + adLoginSearchCriteria + "=" + adLogin + ")", searchCtls);
149        return answer;
150    }
151 
152}

That’s all!!!!

Huseyin OZVEREN

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

Related Post