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 {
           
              //環(huán)境設(shè)定
              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){
              
                 //設(shè)定要取得的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 | 雪浪
          真的感謝你的分享與給與!!!  回復(fù)  更多評論
            
          主站蜘蛛池模板: 二连浩特市| 微山县| 宝兴县| 瑞金市| 华安县| 正安县| 治多县| 松桃| 兴隆县| 大荔县| 余庆县| 桓台县| 揭西县| 德兴市| 黄浦区| 平陆县| 岑溪市| 遂平县| 乌拉特后旗| 柳林县| 德江县| 彰武县| 巫山县| 霸州市| 柘城县| 兴仁县| 北票市| 南阳市| 玛曲县| 怀仁县| 海伦市| 兴安县| 西吉县| 黔东| 舒兰市| 敦化市| 玉田县| 台东县| 渭源县| 徐闻县| 济源市|