We will use only standard Java classes. So we don't need any dependency. In the example you can see my configurations. Yours may differ (pay attention to Context.SECURITY_PRINCIPAL). Here is the code:
import java.util.Properties;
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;
public class LdapTest {
public static void processRequest(InitialLdapContext ctx, String userContext, String filter, String attribute) {
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> searchResults;
try {
searchResults = ctx.search(userContext, filter, searchControls);
while (searchResults.hasMoreElements()) {
SearchResult sr = searchResults.next();
Attributes attributes = sr.getAttributes();
Attribute a = attributes.get(attribute);
if (a != null) {
String attrValue = (a.get().toString());
System.out.println(attrValue);
} else {
System.out.println("Cannot get data");
}
}
} catch (NamingException e) {
e.printStackTrace();
}
}
private static InitialLdapContext initialiaseLdapContext(String server, int port, String username, String password, String contextDN) {
boolean initialised = false;
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
properties.put(Context.PROVIDER_URL, "ldap://" + server + ":"+ port);
properties.put(Context.SECURITY_AUTHENTICATION, "simple");
properties.put(Context.SECURITY_PRINCIPAL, "uid=" + username + "," + contextDN); //YOU MAY NEED TO CHANGE CODE HERE
properties.put(Context.SECURITY_CREDENTIALS, password);
InitialLdapContext ctx = null;
try {
// Create initial context
ctx = new InitialLdapContext(properties, null);
initialised = true;
} catch (NamingException e) {
initialised = false;
} finally {
if (initialised) {
System.out.println("Initialization success");
} else {
System.out.println("Initialization fail");
}
}
return ctx;
}
public static void main(String[] args) {
String contextDN = "dc=test,dc=com";
InitialLdapContext ctx = initialiaseLdapContext("localhost", 389, "test@test.com", "test" , contextDN);
try {
if (ctx != null) {
processRequest(ctx, contextDN, "(uid=qwertTest@test.com)", "street");
ctx.close();
}
} catch (NamingException e) {
e.printStackTrace();
}
}
}