`
balaschen
  • 浏览: 190190 次
  • 性别: 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加密访问AD(overssl)(LDAPS )C++

    通过LDAPoverSSL访问AD,可忽略证书,亲测可通,AD证书过期以及无效均可以正常访问,依赖WLdap32库,下载可自行修改AD地址和账户进行测试

    ldap:使用ldaps协议对AD 2003进行身份验证

    先决条件AD服务器具有读/写访问权限的AD中的auth-app帐户主机(在JVM的keystore中)和服务器上的LDAPS证书: 192.168.151.10 ad-grsu.grsu.local 您的hosts文件中应该有ad-grsu.grsu.local记录.\keytool.exe -...

    kibana-auth-proxy:Kibana的forwardAuth代理为ldap提供集成

    kibana-auth-proxy 旨在用作Authelia的forwardAuth代理(可能还进行了其他测试,例如nginx,未经测试),以便使用LDAP / Active Directory在Elasticsearch中进行用户访问而无需付费订阅。 请求去特拉菲克Traefik将其...

    AD_Test.zip

    C++通过ADSI接口访问AD服务器的测试代码,只实现了用户遍历和查找特定用户的功能。

    PSLDAPQueryLogging:PowerShell模块可简化AD LDAP诊断日志的配置

    这是一个快速的成功,没有花太多时间进行泛化或测试。 拉请求将是受欢迎的! 职能: Test-LDAPQueryLoggingPrerequisites :检查域控制器是否满足此日志记录的先决条件Enable-LDAPQueryLogging :启用诊断日志记录...

    Pydio文件共享平台 v8.0.2.zip

    添加ldap支持嵌套组中的AD成员值; 修复EncFS; 确保unserialized对象是Notification实例; 将lite版本切换到完整版; 修复webDAV上传事件。应该修复#1317并修复#1318; 通过检查空的$ pwd变量替换检查bypass...

    ASP3《高级编程》(第一部分)

    6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 184 6.2.6 Content Rotator组件 188 6.2.7 Page Counter组件 190 6.2.8 Permission Checker组件 191 6.2.9 MyInfo 组件 194...

    ASP3《高级编程》(第二部分)

    6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 184 6.2.6 Content Rotator组件 188 6.2.7 Page Counter组件 190 6.2.8 Permission Checker组件 191 6.2.9 MyInfo 组件 194...

Global site tag (gtag.js) - Google Analytics