java

  1. package ldap; 
  2.  
  3. import java.util.Hashtable; 
  4. import javax.naming.Context; 
  5. import javax.naming.directory.DirContext; 
  6. import javax.naming.directory.InitialDirContext; 
  7.  
  8. public class ldap { 
  9.      
  10.       private String host = "ldap://192.168.X.X:389"
  11.       public boolean login(String userName, String password) { 
  12.           boolean result = true
  13.           DirContext ctx = null
  14.           Hashtable<String, String> env = new Hashtable<String, String>(); 
  15.           env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
  16.           env.put(Context.PROVIDER_URL,host);                                    //LDAP host 
  17.           env.put(Context.SECURITY_AUTHENTICATION, "simple");             //简单模式进行连接 
  18.           env.put(Context.SECURITY_PRINCIPAL, "cn=" + userName + ",dc=XX,dc=XX");//用户名 
  19.           env.put(Context.SECURITY_CREDENTIALS, password);                      //密码传进去 
  20.           try { 
  21.               ctx = new InitialDirContext(env); 
  22.                 }  
  23.           catch (Exception e) { 
  24.               result = false
  25.                 } 
  26.     /* 
  27.      * 关闭连接 
  28.      */ 
  29.                 finally  
  30.                 { 
  31.                     if (ctx != null
  32.                     { 
  33.                         try { 
  34.                             ctx.close(); 
  35.                         }  
  36.                         catch (Exception e) { 
  37.                             result = false
  38.                         } 
  39.                     } 
  40.                 } 
  41.           return result; 
  42.       } 

jsp

 

  1. <
  2. if(request.getParameter("accountName") !=null && request.getParameter("passWord") != null){ 
  3.     String accountName = request.getParameter("accountName");  //获取html输入框的数值 
  4.     String passWord = request.getParameter("passWord"); 
  5.      
  6.     ldap lp=new ldap();                                          //实例化 
  7.     if(lp.login(accountName,passWord))                              //传参,返回ture或者false 
  8.     {验证通过的动作代码} 

 

2012-8-29

上面的方法是只能适用于用户在根目录下,DN没有ou这个选项的验证

因为组织结构的调整和整合,目录级别发生变动,会有多个ou,会有子目录。所以这个验证就出现不能登录的情况了。