posts - 23,comments - 12,trackbacks - 0
          1.連接  
           
          import  java.util.Hashtable;  
           
          import  javax.naming.Context;  
          import  javax.naming.NamingException;  
          import  javax.naming.directory.DirContext;  
          import  javax.naming.directory.InitialDirContext;  
           
          public  class  ActiveDirectoryConntct1  
          {  
                 public  static  void  main(String[]  args)  
                 {  
                         String  account="user1";  
                         String  password="password1";  
                         String  root="dc=test,dc=com";  //root  
           
                         Hashtable  env  =  new  Hashtable();  
                         env.put(Context.INITIAL_CONTEXT_FACTORY,  "com.sun.jndi.ldap.LdapCtxFactory");  
                         env.put(Context.PROVIDER_URL,  "ldap://192.168.0.1:389/"  +  root);  
                         env.put(Context.SECURITY_AUTHENTICATION,  "simple");  
                         env.put(Context.SECURITY_PRINCIPAL,  "uid="  +  account  +  ","  +  root);  
                         env.put(Context.SECURITY_CREDENTIALS,  password);  
           
                         DirContext  ctx  =  null;  
                         try  
                         {  
                                 ctx  =  new  InitialDirContext(env);  
                                 System.out.println("認證成功");  
                         }  
                         catch(javax.naming.AuthenticationException  e)  
                         {  
                                 System.out.println("認證失敗");  
                         }  
                         catch(Exception  e)  
                         {  
                                 System.out.println("認證出錯:");  
                                 e.printStackTrace();  
                         }  
           
                         if(ctx  !=  null)  
                         {  
                                 try  
                                 {  
                                         ctx.close();  
                                 }  
                                 catch  (NamingException  e)  
                                 {  
                                         //ignore  
                                 }  
                         }  
                         System.exit(0);  
                 }  
          }  
           
          2.查詢  
          DirContext  ctx  =  ...  
          SearchControls  constraints  =  new  SearchControls();  
          constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);  
          //constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);  
          NamingEnumeration  en  =  ctx.search("",  "uid=*",  constraints);  //查詢所有用戶  
          while  (en  !=  null  &&  en.hasMoreElements())  
          {  
                 Object  obj  =  en.nextElement();  
                 if(obj  instanceof  SearchResult)  
                 {  
                         SearchResult  si  =  (SearchResult)  obj;  
                   
                         System.out.println("name:  "  +  si.getName());  
                   
                         Attributes  attrs  =  si.getAttributes();  
                         if  (attrs  ==  null)  
                         {  
                                 System.out.println("No  attributes");  
                         }  
                         else  
                         {  
                                 for  (NamingEnumeration  ae  =  attrs.getAll();  ae.hasMoreElements();)  
                                 {  
                                         Attribute  attr  =  (Attribute)  ae.next();  
                                         String  attrId  =  attr.getID();  
                   
                                         for  (Enumeration  vals  =  attr.getAll();vals.hasMoreElements();)  
                                         {  
                                                 System.out.print(attrId  +  ":  ");  
                                                 Object  o  =  vals.nextElement();  
                                                 if(o  instanceof  byte[])  
                                                         System.out.println(new  String((byte[])o));  
                                                 else  
                                                         System.out.println(o);  
                                         }  
                                 }  
                         }  
                 }  
                 else  
                 {  
                         System.out.println(obj);  
                 }  
                 System.out.println();  
          }  
          ...  
          ctx.close();  
           
          3.添加  
          DirContext  ctx  =  ...;  
          String  newUserName  =  "user2";  
           
          BasicAttributes  attrs  =  new  BasicAttributes();  
           
          BasicAttribute  objclassSet  =  new  BasicAttribute("objectclass");  
          objclassSet.add("person");    
          objclassSet.add("top");    
          objclassSet.add("organizationalPerson");    
          objclassSet.add("inetOrgPerson");  
           
          attrs.put(objclassSet);  
          attrs.put("sn",  newUserName);  
          attrs.put("uid",  newUserName);  
           
          ctx.createSubcontext("uid="  +  newUserName,  attributes);  
          ...  
           
           
          4.刪除  
          String  account  =  "user2";  
          DirContext  ctx  =  ...;  
          ctx.destroySubcontext("uid="  +  account);  
           
           
          5.修改  
          String  account  =  "user2";  
          String  newDisplayName  =  "newDisplayName";  
           
          ModificationItem  modificationItem[]  =  new  ModificationItem[1];  
          modificationItem[0]  =  
                     new  ModificationItem(  
                                 DirContext.REPLACE_ATTRIBUTE,  
                                 new  BasicAttribute("displayName",  newDisplayName);  
           
          DirContext  ctx  =  ...;  
          ctx.modifyAttributes("uid="  +  account,  modificationItem);  
          posted on 2005-10-27 16:40 my java 閱讀(1379) 評論(1)  編輯  收藏 所屬分類: JNDI

          FeedBack:
          # re: 用jdni 對LDAP讀寫操作代碼
          2007-11-18 11:20 | 雪浪
          謝謝!!!  回復  更多評論
            
          主站蜘蛛池模板: 静宁县| 大关县| 宣城市| 阳谷县| 延庆县| 永和县| 项城市| 洪湖市| 增城市| 慈利县| 泉州市| 延吉市| 方山县| 渭源县| 古丈县| 科技| 榕江县| 衡东县| 河西区| 沙坪坝区| 栖霞市| 视频| 嵊州市| 银川市| 林西县| 盐城市| 遂宁市| 西和县| 铁岭市| 嘉祥县| 惠东县| 东兰县| 新丰县| 苗栗县| 广灵县| 怀柔区| 襄汾县| 遵化市| 富宁县| 巫山县| 饶河县|