posts - 23,comments - 12,trackbacks - 0


          import java.util.Properties;
          import javax.naming.*;  
          import javax.naming.directory.*;
          /*
           * Created on 2005-10-26
           *
           * TODO To change the template for this generated file go to
           * Window - Preferences - Java - Code Style - Code Templates
           */

           

           

          class LdapAuth
          {
          public static void main(String[] args)
          {
              //***************** user information to be authenticated ********************************
              //*****************Please modify the following three properties accordingly ************
              String ldapHost= "ldap://aaa:389"; //ldap host + port number
             String DN = "cn=admin,cn=users,dc=aa,dc=com,dc=cn";
            String password = "changeit" ; 
           
              Properties props = new Properties(); 
              props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");   

              props.put(Context.SECURITY_AUTHENTICATION, "simple");     //use simple authentication mechanism
              props.put(Context.SECURITY_PRINCIPAL, DN);   
              props.put(Context.SECURITY_CREDENTIALS, password); 
              props.put(Context.PROVIDER_URL, ldapHost); 

              long start = System.currentTimeMillis();
              long end=0;
              long time =0;

              try
                  {
                  System.out.println("authenticating"); 
                  DirContext ctx = new InitialDirContext(props);
                  System.out.println("authenticated");
                  end = System.currentTimeMillis();
                  time = end - start;
                  System.out.println( "authentication takes = " + time + " millis");    
                  System.out.println("successfully authenticate DN: "+DN);
               
                  Attributes Atb = ctx.getAttributes("cn=username,ou=it,dc=aa,dc=com,dc=cn");
                  NamingEnumeration enum = Atb.getAll();
                  System.out.println("aa");
                  while (enum.hasMore()) {
                      Attribute attr = (Attribute)enum.next();
                      System.out.println(attr);
                  }

              }
                  catch (Exception ex)
              {
                  end = System.currentTimeMillis();
                  time = end - start;
                  System.out.println("Exception is "+ex.toString());
                  ex.printStackTrace();
                  System.out.println( "authentication takes = " + time + " millis");   
                  System.out.println("fail to authenticate DN: "+DN);
              }
          }
          }







          adauth.java

          import java.lang.*;
          import java.util.Hashtable ;
          import javax.naming.*;
          import javax.naming.directory.* ;
          import javax.naming.ldap.*;
          import javax.naming.spi.*;
           
           public class ADAuth {
           
              //環境設定
              private Hashtable env = null;
           
              //目錄
              DirContext ctx = null;
           
              //是否能login
              boolean bLogin = false;
            
              //更改是否成功
              boolean getAttr = false;
             
           
            public ADAuth(String strId ,String strPassword ){
              env = new Hashtable();
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              env.put(Context.PROVIDER_URL, "ldap://xxx.xxx.xxx.xxx:389");
              env.put(Context.SECURITY_AUTHENTICATION,"Simple");
              env.put(Context.SECURITY_PRINCIPAL,"cn="+strId+",cn=users,DC=EEE,DC=abc,DC=com,DC=tw");
              env.put(Context.SECURITY_CREDENTIALS , strPassword );
           }//end ADAuth()
           
            public ADAuth(){
              this( "Administrator" , "xxxxxxx" );
            }
           
            public boolean checkAuth(){
              
           
              try{
                
                System.out.println("------------------");
                System.out.println("連入LDAP--->");      
                ctx = new InitialDirContext(env);
                System.out.println("ok");
           
                bLogin = true ;
           
              } catch(javax.naming.AuthenticationException authe) {
                
                System.out.println("失敗");
                bLogin = false ;
                
              } catch(Exception e) {
                
                System.out.println("失敗");
                System.out.println(e);
                
              } finally{
                
                  try{
                    ctx.close();
                  
                  }catch(Exception Ignore){}
                
              } 
              return bLogin ;
            }
            
            public boolean getAttribute(String a){
              
                 //設定要取得的attribute
                String[] attrIds ={"displayName"};    
              
                try{
                
                  ctx = new InitialDirContext(env);
                  Attributes Atb = ctx.getAttributes("cn=users,DC=EEE,DC=abc,DC=com,DC=tw",attrIds);
                  NamingEnumeration enum = Atb.getAll();
                    while (enum.hasMore()) {
                        Attribute attr = (Attribute)enum.next();
                        System.out.println(attr);
                    }
           
                  System.out.println("------------------ok");
                  getAttr = true;
                      
              } catch(javax.naming.AuthenticationException authe) {
                
                System.out.println("失敗");      
                  getAttr = false;
                
              } catch(Exception e) {
                
                
                System.out.println("失敗");
                  getAttr = false;
                          System.out.println(e);
                
              } finally{
                
                  try{
                    ctx.close();
                  
                  }catch(Exception Ignore){}
              }
              return getAttr;
           }
          }
           
          
          posted on 2005-10-31 08:57 my java 閱讀(2439) 評論(1)  編輯  收藏 所屬分類: JNDI

          FeedBack:
          # re: LDAP實例
          2007-11-18 11:20 | 雪浪
          真的感謝你的分享與給與!!!  回復  更多評論
            
          主站蜘蛛池模板: 漳浦县| 临猗县| 山丹县| 金坛市| 墨玉县| 宣武区| 建阳市| 明光市| 永康市| 陈巴尔虎旗| 昭苏县| 巴青县| 琼海市| 文成县| 渭源县| 休宁县| 晋州市| 金阳县| 花垣县| 清水河县| 平乡县| 三门峡市| 扶沟县| 两当县| 龙口市| 雅江县| 平乡县| 永嘉县| 屏山县| 永宁县| 温泉县| 绥滨县| 宁国市| 湘阴县| 柳江县| 瓮安县| 临颍县| 富锦市| 彰化县| 榆林市| 岳阳县|