Ldap登陆AD(Active Directory)进行认证的Java示例
2014-05-11 18:33
363 查看
原文地址:http://hi.baidu.com/js2007/item/24efbb0fae1c9b90a3df432a
package LdapTest; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.AuthenticationException; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.Control; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class AuthenticationTest { private String BASE_DN ="dc=statestreet,dc=com"; // private DirContext ctx = null; private LdapContext ctx = null; private Hashtable env = null; private Control[] connCtls = null; private void LdapConnect(){ env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=statestreet,dc=com"); env.put(Context.SECURITY_CREDENTIALS, "****"); //自己填入 try{ ctx = new InitialLdapContext(env,connCtls); // ctx = new InitialDirContext(env); System.out.println("Login Ldap Server Successful..."); }catch(AuthenticationException e){ System.out.println("Login Ldap Server Failed..."); e.printStackTrace(); }catch(Exception e){ System.out.println("Login Ldap Server Wrong...\n "+e.toString()); } } private String getUserDN(String userid){ String userDN=""; try{ SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration en = ctx.search("","uid="+userid,constraints); if(en == null){ System.out.println("Have NO such user!"); } if(!en.hasMoreElements()){ System.out.println("Have NO such user!"); } while (en != null && en.hasMoreElements()){ Object obj = en.nextElement(); if(obj instanceof SearchResult){ SearchResult si = (SearchResult) obj; userDN += si.getName(); userDN += "," + BASE_DN; } else{ System.out.println(obj); } } }catch(Exception e){ System.out.println("Exception in search user DN : "+e.toString()); } return userDN; } public boolean Authenricate(String ID,String pwd){ LdapConnect(); boolean valide = false; String userDN = getUserDN(ID); if(userDN=="") return valide; try { ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,userDN); ctx.addToEnvironment(Context.SECURITY_CREDENTIALS,pwd); ctx.reconnect(connCtls); System.out.println(userDN + " is authenticated! "); valide = true; }catch (AuthenticationException e) { System.out.println(userDN + " is NOT authenticated! "); valide = false; }catch (NamingException e) { System.out.println(userDN + " is NOT authenticated! "); valide = false; } LdapDisconnect(); return valide; } private void LdapDisconnect(){ if (ctx != null) { try { ctx.close(); } catch (NamingException e) { e.printStackTrace(); } } } }
相关文章推荐
- JAVA中使用LDAP进行用户认证
- Java访问LDAP服务器认证代码示例
- Java程序通过LDAP对用户进行登陆验证
- JAVA中使用LDAP进行用户认证
- Java使用BigDecimal进行高精度计算的示例代码
- Java实现对一行英文进行单词提取功能示例
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
- 使用外部LDAP用户认证后,DJANGO用户如何作登陆的操作?
- HTTP基本认证(Basic Authentication)的JAVA示例
- Java注解教程:自定义注解示例,利用反射进行解析
- ldap登陆认证
- 用存储过程进行用户登陆认证
- Java对xls文件进行读写操作示例代码
- Java使用LdAP获取AD域用户
- 善用LDAP来做登陆验证(Java 中级)
- Java使用LdAP获取AD域用户
- JAVA访问LDAP(openldap)的示例
- Java中进行url请求(简单示例)
- HTTP基本认证(Basic Authentication)的JAVA示例
- java 线程 生产者-消费者与队列,任务间使用管道进行输入、输出 讲解示例 --thinking java4