`
balaschen
  • 浏览: 192200 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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. }      
分享到:
评论

相关推荐

    LDAP Weblogic和AD之间的通信

    通过 LDAP,AD 可以提供认证和授权服务,使得其他系统(如 WebLogic)能够验证用户身份并根据权限控制访问。 **2. WebLogic 配置 LDAP 认证** WebLogic 支持多种身份验证机制,其中之一就是 LDAP。配置 LDAP 认证...

    LdapBrowser2.82版和LDAP使用手册

    8. **测试连接**:使用LdapBrowser或其他工具验证服务器的可访问性和数据的正确性。 **使用LdapBrowser 2.82版** 1. **连接设置**:在LdapBrowser中输入服务器地址、端口、认证方式等信息,建立连接。 2. **浏览...

    adLDAP:adLDAP

    4. **权限控制**:adLDAP支持检查用户在AD中的角色和权限,这在实现访问控制策略时非常有用。 5. **易用性**:adLDAP通过提供简单的PHP接口,降低了与AD交互的复杂性,使得非熟悉LDAP的开发者也能轻松使用。 尽管...

    非常好用的ldap连接工具

    4. **集成开发**:对于开发人员,ApacheDirectoryStudio 可以作为测试和调试 LDAP 应用程序的工具,以便于构建与 AD 集成的解决方案。 总结,ApacheDirectoryStudio 是一款功能强大的 LDAP 连接工具,尤其适合于...

    LDAP详细配置

    LDAP,轻量级目录访问协议,是一种用于访问和管理分布式目录服务的标准协议。它允许用户和应用程序查找、修改和管理存储在网络中的用户信息和资源。在本配置中,我们将深入探讨如何配置LDAP与流控联动进行认证管理,...

    ldap连接测试工具源代码C#版

    标题 "ldap连接测试工具源代码C#版" 涉及到的是一个使用C#编程语言开发的 LDAP(轻量级目录访问协议)连接测试工具。这个工具的主要功能是允许用户进行域用户信息的读取、域结构的探索以及登录验证。在Windows环境下...

    java操作Ldap,支持建立开启状态的用户,支持修改密码,放入eclipse测试即用

    Java操作LDAP(轻量级目录访问协议)是企业级应用中常见的任务,特别是在管理AD(活动目录)域用户时。本项目提供了一种便捷的方式,允许开发者在Java环境中创建、管理和更新AD域中的用户信息,并且可以直接在...

    什么是LDAP连接工具?如何利用好它.docx

    此外,Apache Directory Studio 支持 LDAP v3 标准,兼容多种 LDAP 服务器,包括 ApacheDS、OpenLDAP 和 Microsoft AD。 ### 2. JXplorer JXplorer 是一个轻量级且跨平台的 LDAP 浏览器,适用于 Windows、Linux 和...

    Laravel开发-my-eloquent-ldap

    AD(活动目录)是微软实现的LDAP目录服务,广泛应用于Windows环境,提供用户身份验证、权限管理和资源访问控制。 **Laravel Eloquent LDAP的实现原理** 这个扩展可能包含以下主要部分: 1. **模型扩展**:可能会...

    ldap.jar包资源

    7. **测试和调试**:进行测试以确保配置正确,并能正常与AD服务器通信。 通过理解和实践这些步骤,开发者可以将Java应用程序与AD集成,实现安全、高效的身份验证和目录服务访问。在实际项目中,这通常涉及到与企业...

    Laravel开发-eloquent-ldap

    然而,当我们涉及到更复杂的身份验证需求时,比如结合内部数据库与LDAP(轻量级目录访问协议)或AD(活动目录)服务器,Laravel的开箱即用功能可能不足以满足。这就是"Laravel开发-eloquent-ldap"包的作用所在。 这...

    windows下ldap服务和客户端

    **LDAP(轻量目录访问协议)**是一种开放标准的网络协议,用于访问和管理分布式目录服务。它允许用户和应用程序通过简单的命名系统查找、检索、修改和管理存储在网络中的信息。在Windows环境下设置和使用LDAP服务是...

Global site tag (gtag.js) - Google Analytics