java链接LDAP:
package com.mh.ldap.demo;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
public class LDAPUtil {
private static final String CONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
private static final String SECURITY_AUTHENTICATION = "simple";
private static final String SECURITY_PROTOCOL = "SSL";// NO_SSL
private static final String PROVIDER_URL = "ldap://127.0.0.1:389";
private static final String BASE_DN = "OU=??,OU=??,OU=??,DC=??,DC=??,DC=??";
private static final String USERNAME = "domain\\username";
private static final String PASSWORD = "password";
public static InitialDirContext initContext() {
InitialDirContext ctx = null;
try {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
env.put(Context.SECURITY_AUTHENTICATION, SECURITY_AUTHENTICATION);
env.put(Context.SECURITY_PRINCIPAL, USERNAME);
env.put(Context.SECURITY_CREDENTIALS, PASSWORD);
// env.put(Context.SECURITY_PROTOCOL, SECURITY_PROTOCOL);
ctx = new InitialDirContext(env);
} catch (Exception e) {
e.printStackTrace();
}
return ctx;
}
public static void findUser(Context context, String username) {
InitialDirContext ctx = initContext();
try {
SearchControls sc = new SearchControls();
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "<KEY_USERNAME>=" + username;
NamingEnumeration en = ctx.search(BASE_DN, filter, sc);
while (en != null && en.hasMoreElements()) {
// get attributes for this user
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ctx != null) {
ctx.close();
ctx = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
使用Java操作LDAP案例:
http://cgs1999.iteye.com/blog/1574635
使用Java自带API操作LDAP:
http://my.oschina.net/xpbug/blog/86193
Java与LDAP进行用户认证:
http://www.binghe.org/2011/08/user-authentication-using-ldap-in-java/