ldap 访问AD测试

java 代码
java 代码
 
  1. /**     
  2.  * $Revision: 1.0 $     
  3.  * Created: 2007-6-8     
  4.  * $Date: 2007-6-8 $     
  5.  *      
  6.  * Author: Keven Chen     
  7.  */      
  8. package ldap;       
  9.       
  10. import java.util.Enumeration;   
  11. import java.util.Properties;   
  12.   
  13. import javax.naming.Context;   
  14. import javax.naming.NamingEnumeration;   
  15. import javax.naming.NamingException;   
  16. import javax.naming.ReferralException;   
  17. import javax.naming.directory.Attribute;   
  18. import javax.naming.directory.Attributes;   
  19. import javax.naming.directory.BasicAttribute;   
  20. import javax.naming.directory.DirContext;   
  21. import javax.naming.directory.InitialDirContext;   
  22. import javax.naming.directory.ModificationItem;   
  23. import javax.naming.directory.SearchControls;   
  24. import javax.naming.directory.SearchResult;   
  25.       
  26. /**     
  27.  * @author Keven Chen     
  28.  * @version $Revision 1.0 $     
  29.  *     
  30.  */      
  31. public class JndiLdap {       
  32.     private static final String SUN_JNDI_PROVIDER = "com.sun.jndi.ldap.LdapCtxFactory";       
  33.     private static final String IBM_JNDI_PROVIDER = "com.ibm.jndi.LDAPCtxFactory";       
  34.            
  35.     public static void main(String[] args) throws Exception {       
  36.         DirContext ctx = null;       
  37.         try{       
  38.             ctx = ldapConnection();   
  39.             list(ctx);       
  40.             System.out.println("/");   
  41.             getEntry("CN=keven,CN=users,DC=comwave,DC=com", ctx);   
  42.             enableUser(ctx,"CN=bribin,OU=bpm,DC=comwave,DC=com");   
  43.         } finally{       
  44.             if(ctx !=null){   
  45.                 ctx.close();   
  46.             }   
  47.         }   
  48.     }   
  49.            
  50.     private static void getEntry(String dn,DirContext ctx){       
  51.         //Name       
  52.         try {       
  53.             Attributes attrs = ctx.getAttributes(dn);       
  54.             for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();) {       
  55.                 Attribute attr = (Attribute)ae.next();       
  56.                 String attrId = attr.getID();       
  57.                 for (NamingEnumeration vals = attr.getAll(); vals.hasMore();) {       
  58.                   String thing = vals.next().toString();       
  59.                   System.out.println(attrId + ": " + thing);       
  60.                 }       
  61.               }       
  62.         } catch (NamingException e) {       
  63.             e.printStackTrace();       
  64.         }       
  65.     }       
  66.        
  67.     private static void disableUser(DirContext ctx,String user) throws NamingException{   
  68.         int UF_ACCOUNTDISABLE = 0x0002;   
  69.         int UF_NORMAL_ACCOUNT = 0x0200;   
  70.         ModificationItem[] mods = new ModificationItem[1];   
  71.         mods[0]= new ModificationItem(DirContext.REPLACE_ATTRIBUTE,new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_ACCOUNTDISABLE)));   
  72.         ctx.modifyAttributes(user, mods);   
  73.     }   
  74.        
  75.     private static void enableUser(DirContext ctx,String user) throws NamingException{   
  76.         int UF_ACCOUNTDISABLE = 0x0002;   
  77.         int UF_NORMAL_ACCOUNT = 0x0200;   
  78.         ModificationItem[] mods = new ModificationItem[1];   
  79.         mods[0]= new ModificationItem(DirContext.REPLACE_ATTRIBUTE,new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT)));   
  80.         ctx.modifyAttributes(user, mods);   
  81.     }   
  82.        
  83.     private static void list(DirContext ctx){   
  84.         boolean moreReferrals = true;   
  85.         while(moreReferrals) {   
  86.             try{   
  87.                 for(NamingEnumeration results = search(ctx); results.hasMore();)   
  88.                 {   
  89.                     SearchResult si = (SearchResult)results.next();   
  90.                     System.out.println(si.getName());   
  91.                     Attributes attrs = si.getAttributes();       
  92.                     if (attrs == null) {       
  93.                         System.out.println("No attributes");       
  94.                         continue;       
  95.                     }       
  96.                     NamingEnumeration ae = attrs.getAll();        
  97.                     while (ae.hasMoreElements()) {       
  98.                         Attribute attr =(Attribute)ae.next();       
  99.                         String id = attr.getID();       
  100.                         Enumeration vals = attr.getAll();       
  101.                         while (vals.hasMoreElements())       
  102.                             System.out.println("   "+id + ": " + vals.nextElement());   
  103.                     }    
  104.                 }   
  105.                 moreReferrals = false;   
  106.             }catch (ReferralException e){   
  107.                 /*myurl = getReferralUrl(e);  
  108.                 if(myurl.getDN().length() == 0)  
  109.                 {  
  110.                     myurl.setDN(baseDN);  
  111.                     name = url.getDN();  
  112.                 } else  
  113.                 {  
  114.                     name = getName(myurl.getDN());  
  115.                 }  
  116.                 name = name + " [" + myurl.getHost() + ":" + myurl.getPort() + "]";  
  117.                 t = new TreeNode2(name, myurl);  
  118.                 checkLeaf(t, null);  
  119.                 node.add(t);*/  
  120.                 moreReferrals = e.skipReferral();   
  121.                 try  
  122.                 {   
  123.                     ctx = (DirContext)e.getReferralContext();   
  124.                 }   
  125.                 catch(NamingException _ex) { }   
  126.             }catch (NamingException e){   
  127.                 e.printStackTrace();   
  128.                 moreReferrals = false;   
  129.             }   
  130.         }   
  131.     }   
  132.        
  133.     private static NamingEnumeration search(DirContext ctx) throws NamingException {   
  134.         SearchControls search = new SearchControls();       
  135.         search.setSearchScope(SearchControls.SUBTREE_SCOPE);       
  136.         String attrList[] = {"cn","distinguishedName"};//memberOf,member,distinguishedName,lockoutTime>1       
  137.         search.setReturningAttributes(attrList);       
  138.         search.setCountLimit(0);   
  139.         search.setTimeLimit(0);   
  140.         String filter = "(sAMAccountName=brib*)";//(objectClass=*)   
  141.         NamingEnumeration results = ctx.search("dc=comwave,dc=com",filter,search);     
  142.         return results;   
  143.     }   
  144.        
  145.     private static void ldapSearch(DirContext ctx) throws NamingException {       
  146.         SearchControls search = new SearchControls();       
  147.         search.setSearchScope(SearchControls.ONELEVEL_SCOPE);       
  148.         String attrList[] = {"cn"};//memberOf,member,distinguishedName,lockoutTime>1       
  149.         search.setReturningAttributes(attrList);       
  150.         search.setCountLimit(0);   
  151.         search.setTimeLimit(0);   
  152.         NamingEnumeration results = ctx.search("dc=comwave,dc=com","(objectClass=*)",search);       
  153.         while (results.hasMore()) {       
  154.             SearchResult si =(SearchResult)results.next();   
  155.                
  156.             System.out.println(si.getName());       
  157.             /*Attributes attrs = si.getAttributes();      
  158.             if (attrs == null) {      
  159.                 System.out.println("No attributes");      
  160.                 continue;      
  161.             }      
  162.             NamingEnumeration ae = attrs.getAll();       
  163.             while (ae.hasMoreElements()) {      
  164.                 Attribute attr =(Attribute)ae.next();      
  165.                 String id = attr.getID();      
  166.                 Enumeration vals = attr.getAll();      
  167.                 while (vals.hasMoreElements())      
  168.                     System.out.println("   "+id + ": " + vals.nextElement());      
  169.             }  */     
  170.         }       
  171.     }       
  172.       
  173.     private static DirContext ldapConnection() throws Exception {       
  174.         Properties env = new Properties();       
  175.                
  176.         env.put(Context.INITIAL_CONTEXT_FACTORY, SUN_JNDI_PROVIDER);//java.naming.factory.initial       
  177.         env.put(Context.PROVIDER_URL, "ldap://192.168.1.32:389");//java.naming.provider.url       
  178.         env.put(Context.SECURITY_AUTHENTICATION, "simple");//java.naming.security.authentication       
  179.         env.put(Context.SECURITY_PRINCIPAL, "administrator@comwave.com");//java.naming.security.principal       
  180.         env.put(Context.SECURITY_CREDENTIALS, "yourpassword");//java.naming.security.credentials       
  181.         env.put(Context.REFERRAL, "throw");   
  182.                
  183.         DirContext ctx = null;       
  184.         try {       
  185.             ctx = new InitialDirContext(env);       
  186.         } catch (NamingException e) {       
  187.             throw new Exception(e);       
  188.         }       
  189.         return ctx;       
  190.     }       
  191.            
  192.            
  193. }      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值