java ldap 访问 Active Directory

package   com.faw_qm.ldap;  
   
  /**  
    *   <p>Title:   LDAP</p>  
    *  
    *   <p>Description:   </p>  
    *  
    *   <p>Copyright:   Copyright   (c)   2005.09.23</p>  
    *  
    *   <p>Company:   Faw_QM</p>  
    *  
    *   @author   Simon  
    *   @version   1.0  
    */  
  import   javax.naming.*;  
  import   javax.naming.directory.*;  
  import   javax.naming.directory.SearchControls;  
  import   javax.naming.directory.DirContext;  
  import   javax.naming.directory.InitialDirContext;  
  import   java.util.*;  
   
  public   class   QueryAD   {  
   
      public   QueryAD()   {  
      }  
   
      public   DirContext   getContext()   throws   Exception   {  
          Hashtable   table   =   new   Hashtable();  
          table.put(Context.INITIAL_CONTEXT_FACTORY,   "com.sun.jndi.ldap.LdapCtxFactory");  
          table.put(Context.PROVIDER_URL,   " ldap://shf.com/");  
          table.put("java.naming.ldap.version",   "3");  
          table.put(Context.REFERRAL,   "follow");  
          table.put(Context.SECURITY_AUTHENTICATION,   "simple");  
          table.put(Context.SECURITY_PRINCIPAL,   "cn=Administrator,cn=Users,dc=shf,dc=com");  
          table.put(Context.SECURITY_CREDENTIALS,   "shf007");  
          InitialDirContext   cnt   =   new   InitialDirContext(table);  
          return   cnt;  
      }  
   
      public   void   query()   throws   Exception   {  
           
          String   base   =   "cn=Users,dc=shf,dc=com";  
          String[]   atts   =   {"cn",   "sAMAccountName",   "DISPLAYName",   "Description",   "userPassword",   "objectSID"};  
          String   filter   =   "objectClass=User";  
          DirContext   cnt   =   this.getContext();  
          SearchControls   searchCons   =   new   SearchControls();  
          NamingEnumeration   namingEnum   =   null;  
          searchCons.setSearchScope(2);  
          searchCons.setCountLimit(0);  
          searchCons.setTimeLimit(0);  
          searchCons.setReturningAttributes(atts);  
          namingEnum   =   cnt.search(base,   filter,   searchCons);  
          print(namingEnum,   base);  
   
      }  
   
      public   void   create()   throws   Exception   {  
          String   userN   =   "Test01";  
          String   sn   =   "Shang";  
          String   givenName   =   "HaiFeng";  
          //String   dispName   =   "尚海峰";  
          String   name   =   "CN="+   userN   +",CN=Users,dc=shf,dc=com";  
          Object   dobject   =   null;  
   
          BasicAttributes   newUser   =   new   BasicAttributes(false);  
          newUser.put("objectClass",   "top");  
          newUser.put("objectClass",   "person");  
          newUser.put("objectClass",   "organizationalperson");  
          newUser.put("objectClass",   "user");  
   
          //userAccountControl     --User   valid  
          newUser.put("sAMAccountName",   userN);  
          newUser.put("givenName",   givenName);  
          newUser.put("sn",   sn);  
          newUser.put("DISPLAYName",   userN);  
          newUser.put("description",   userN);  
          newUser.put("userAccountControl",   "66048");  
          newUser.put("userPassword",   "123456");  
          newUser.put("userPrincipalName",   userN+"@shf.com");  
          DirContext   ctx   =   this.getContext();  
          ctx.bind(name,   dobject,   newUser);  
          System.out.println("Create   Success..");  
      }  
   
      public   void   modify()   throws   Exception   {  
          String   name   =   "CN=Test01,CN=Users,dc=shf,dc=com";  
          //   Specify   the   changes   to   make  
          ModificationItem[]   mods   =   new   ModificationItem[1];  
   
          //   Replace   the   "mail"   attribute   with   a   new   value  
          mods[0]   =   new   ModificationItem(DirContext.REPLACE_ATTRIBUTE,   new   BasicAttribute("givenName",   "Hello"));  
          DirContext   ctx   =   this.getContext();  
          ctx.modifyAttributes(name,   mods);  
          System.out.println("Modify   Success..");  
      }  
   
      public   void   delete()   throws   Exception   {  
          String   dn   =   "CN=Test01,CN=Users,dc=shf,dc=com";  
          DirContext   ctx   =   this.getContext();  
          ctx.destroySubcontext(dn);  
          System.out.println("Delete   Success..");  
      }  
   
      public   void   print(NamingEnumeration   namingEnum,   String   base)   throws   Exception   {  
          while   (namingEnum   !=   null   &&   namingEnum.hasMore())   {  
              SearchResult   result   =   (SearchResult)   namingEnum.next();  
              StringBuffer   sb   =   new   StringBuffer(result.getName());  
              if   (result.getName().length()   >   0)  
                  sb.append(",");  
              sb.append(base);  
              String   s1   =   sb.toString();  
              System.out.println("");  
              System.out.println("DN   ="   +   s1);  
              Attributes   attrs   =   result.getAttributes();  
              if   (attrs.size()   ==   0)   {  
                  return;  
              }  
              else   {  
                  for   (NamingEnumeration   namingEnum_1   =   attrs.getAll();  
                            namingEnum_1.hasMoreElements();   )   {  
                      Attribute   attribute   =   (Attribute)   namingEnum_1.next();  
                      String   attID   =   attribute.getID();  
                      for   (NamingEnumeration   namingEnum_2   =   attribute.getAll();  
                                namingEnum_2.hasMoreElements();   )   {  
                          String   s3   =   "";  
                          Object   attValue   =   namingEnum_2.nextElement();  
                          if   (attValue   instanceof   String)   {  
                              s3   =   (String)   attValue;  
                          }  
                          else   {  
                              if   (attValue   instanceof   byte[])   {  
                                  s3   =   new   String(   (byte[])   attValue,   "UTF8");  
                              }  
                              else   {  
                                  s3   =   new   String("binary   data");  
                              }  
                          }  
                          System.out.println(attID+"=   "+attValue);  
                      }  
   
                  }  
              }  
          }  
   
      }  
   
      public   static   void   main(String[]   args)   throws   Exception   {  
          QueryAD   tt   =   new   QueryAD();  
          tt.query();  
          //tt.create();  
          //tt.delete();  
          //tt.modify();  
      }  
   
  } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值