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(); } } } }
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/