`
jacally
  • 浏览: 770167 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

LDAP实例 转载

    博客分类:
  • JAVA
阅读更多
java 代码
  1. package test.coral.core.ldap;  
  2.   
  3. //引入LDAP的包  
  4. import java.util.Enumeration;  
  5. import java.util.Hashtable;  
  6.   
  7. import javax.naming.Context;  
  8. import javax.naming.NamingEnumeration;  
  9. import javax.naming.directory.Attribute;  
  10. import javax.naming.directory.Attributes;  
  11. import javax.naming.directory.DirContext;  
  12. import javax.naming.directory.InitialDirContext;  
  13. import javax.naming.directory.SearchControls;  
  14. import javax.naming.directory.SearchResult;  
  15.   
  16. import org.apache.commons.lang.StringUtils;  
  17.   
  18. //import mm.splitString;  
  19.   
  20. public class JNDISearch {  
  21.     public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"// 驱动  
  22.   
  23.     public static String MY_HOST = "ldap://localhost:389"; // 主机地址和端口  
  24.   
  25.     public static String MY_SEARCHBASE = "dc=xxx,dc=com"// 基点入口  
  26.   
  27.     public static String MY_FILTER = "uid=txhzm"// 过滤条件  
  28.   
  29.     public static String MGR_DN = "cn=admin,dc=gzbd1b,dc=com"// 用户名  
  30.   
  31.     public static String MGR_PW = "pwd"// 密码  
  32.   
  33.     public static String MY_ATTRS[] = { "uid","cn","userpassword","mail"};  
  34.   
  35.     // StringBuffer res = new StringBuffer(); //用来输入名字,IP地址的对象  
  36.     public static String temp = new String();  
  37.   
  38.     public String search() throws Exception {  
  39.         StringBuffer res = new StringBuffer();  
  40.         try {  
  41.             // 建立连接  
  42.             Hashtable env = new Hashtable();  
  43.             env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);  
  44.             env.put(Context.PROVIDER_URL, MY_HOST);  
  45.             env.put(Context.SECURITY_AUTHENTICATION, "simple"); // 使用简单认证来认证用户  
  46.             env.put(Context.SECURITY_PRINCIPAL, MGR_DN);  
  47.             env.put(Context.SECURITY_CREDENTIALS, MGR_PW);  
  48.             DirContext ctx = new InitialDirContext(env);  
  49.   
  50.             // 设置查询范围并开始查询  
  51.             SearchControls constraints = new SearchControls();  
  52.             constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);  
  53.             NamingEnumeration results = ctx.search(MY_SEARCHBASE, MY_FILTER,  
  54.                     constraints);  
  55.   
  56.             // 打印查询结果  
  57.             while (results != null && results.hasMore()) {  
  58.                 SearchResult sr = (SearchResult) results.next();  
  59.                 String dn = sr.getName();  
  60.                 if(StringUtils.isBlank(dn)) continue;  
  61.                 dn = dn + "," + MY_SEARCHBASE;  
  62.                 System.out  
  63.                         .println("==============================================");  
  64.                 System.out.println("Distinguished Name is: " + dn);  
  65.   
  66.                 // 打印指定的字段//////////////////////////////////////////////////////////////////  
  67.                 Attributes ar = ctx.getAttributes(dn, MY_ATTRS);  
  68.                 if (ar == null) {  
  69.                     // 对应的uid没有多余的属性  
  70.                     System.out.println("Entry " + dn  
  71.                             + " has none of the specified attributes\n");  
  72.                 } else {  
  73.                     // 开始显示对应的字段  
  74.                     for (int i = 0; i < MY_ATTRS.length; i++) {  
  75.                         Attribute attr = ar.get(MY_ATTRS[i]);  
  76.                         if (attr != null) {  
  77.                             System.out.print(MY_ATTRS[i] + " : ");  
  78.                             for (Enumeration vals = attr.getAll(); vals  
  79.                                     .hasMoreElements();) {  
  80.                                 Object obj = vals.nextElement();  
  81.                                   
  82.                                 System.out.println("\t" + obj);  
  83.                                 res.append(temp + "/");  
  84.                             }  
  85.                         }  
  86.                         System.out.println("\n");  
  87.                     }  
  88.                     // /////////////////////////////////////////////////////////////////////////////////  
  89.   
  90.                     /* 
  91.                      * 打印全部的字段/////////////////////////////////////////////////////////////////// 
  92.                      * Attributes attrs = sr.getAttributes(); 
  93.                      * for(NamingEnumeration ne = attrs.getAll(); 
  94.                      * ne.hasMoreElements(); ){ Attribute attr = (Attribute) 
  95.                      * ne.next(); String attrID = attr.getID(); 
  96.                      * System.out.println(attrID+": "); for(Enumeration vals = 
  97.                      * attr.getAll();vals.hasMoreElements(); ){ 
  98.                      * System.out.println("\t"+vals.nextElement()); } 
  99.                      */// ///////////////////////////////////////////////////////////////////////////////  
  100.                 }  
  101.             }  
  102.         } catch (Exception e) {  
  103.             e.printStackTrace();  
  104.             System.exit(1);  
  105.         }  
  106.         System.out.println(res.toString() + "\n\n\n\n ---- end ----");  
  107.   
  108.         // splitString sp = new splitString();  
  109.         // System.out.println("一共有"+sp.splitString(res.toString()).length+"个返回");  
  110.         // //打印显示结果,计算返回的数组值  
  111.         //return sp.splitString(res.toString());  
  112.         return res.toString();  
  113.   
  114.     }  
  115.   
  116.     ///////////////////////////////////////////////////////////////////////////////////////////  
  117.     // 使用正则表达式来分拣提取的字符串 ///////////////////////////////////  
  118.     ///////////////////////////////////////////////////////////////////////////////////////////  
  119.   
  120.       
  121.       
  122.     public static void main(String args[]) {  
  123.         JNDISearch search = new JNDISearch();  
  124.         //System.out.println(myMail.sendMail("libem@163.com", "this is test",   "my \n test"));  
  125.         try {  
  126.             System.out.println(search.search());  
  127.         } catch (Exception e) {  
  128.             // TODO Auto-generated catch block  
  129.             e.printStackTrace();  
  130.         }  
  131.     }     
  132. }  
分享到:
评论

相关推荐

    Ldap实例源码

    在这个"LDAP实例源码"中,我们可以看到一个用纯Java实现的示例,它展示了如何与LDAP服务器进行交互。下面我们将深入探讨这个主题。 首先,源码中可能包含了使用Java LDAP API(JNDI,Java Naming and Directory ...

    ldap的一个实例

    **LDAP实例详解** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于存储和检索分布式目录服务中的信息。在IT行业中,LDAP被广泛应用于用户身份验证、权限管理和组织结构管理等领域。...

    Sun Directory Server(Ldap)实例创建手册

    在创建一个Sun LDAP实例时,你需要按照以下步骤进行操作: 1. **环境准备**: - 确保你已经正确安装了Sun Directory Server软件。通常,它会被安装在 `/opt/IBM/ldap/V6.0` 这样的目录下。 - 使用Xmanager或其他...

    ibm ldap 多个实例时,如何运行idsxcfg

    为了确保各个LDAP实例之间的协调工作,以及优化资源利用,正确地运行`idsxcfg`工具至关重要。`idsxcfg`是IBM Directory Server(原IBM Tivoli Directory Server)提供的一款用于配置和管理LDAP服务器的重要工具。...

    LDAP 通用及实例

    ### LDAP 通用及实例知识点详解 #### 一、LDAP简介 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是一种基于X.500标准的目录服务协议,用于存储和检索目录信息。它通常被用来管理用户身份验证...

    java 操作ldap的简单实例

    Java 操作 LDAP 的简单实例 Java 操作 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的简单实例是 Java 语言中访问和操作 LDAP 服务器的基本示例。本示例展示了如何使用 Java 语言连接 LDAP ...

    LDAP 资料代码实例

    ### LDAP资料代码实例详解 #### 一、创建对象 在LDAP(轻量级目录访问协议)中,创建对象是管理目录服务的一项基本操作。本文档将详细介绍如何在LDAP环境中创建不同类型的对象,包括用户、计算机、组织单位、联系...

    Laravel开发-my-eloquent-ldap

    标题 "Laravel开发-my-eloquent-ldap" 提示我们这是一个关于Laravel框架的开发项目,具体来说是与Eloquent ORM(对象关系映射)结合使用来处理LDAP(轻量级目录访问协议)的扩展。Eloquent是Laravel中的默认ORM,...

    连接ldap服务器实例

    这是一个可以登录ldap服务器并取出想要的结果 的一个简单例子。..

    java连接LDAP的jar包和实例

    Java连接LDAP(Lightweight Directory Access Protocol)是一种常见的任务,用于在分布式环境中管理和访问目录服务信息。这个主题涉及几个关键知识点,包括Java LDAP API、SSL安全连接以及如何通过代码操作LDAP目录...

    LDAP服务器资料,很经典的

    【LDAP服务器介绍】 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,它源自上世纪80年代的国际电报电话协商委员会(CCITT)和国际标准组织ISO的需求,旨在提供一种查找电话号码和电子...

    LDAP原理配置指南

    《LDAP原理配置指南》 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,它源于X.500标准,但针对TCP/IP网络环境进行了简化,使得其在现代企业网络环境中得到了广泛的应用。飞塔信息技术...

    LdapBrowser ldap连接工具

    **LDAP浏览器:深入理解与应用** LDAP(轻量级目录访问协议)是一种用于查询和管理分布式目录服务的网络协议,广泛应用于企业环境中的用户身份验证、权限管理和数据共享。LdapBrowser是一款专为开放源代码的...

    LdapBrowser2.82版和LDAP使用手册

    **LDAP简介** LDAP,全称为轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录服务的标准网络协议。它主要用于存储和检索用户、组织、资源等信息,广泛应用于身份验证...

    ldap安装与客户端ldapadmin windows

    **LDAP(轻量级目录访问协议)是一种网络协议,用于访问和管理分布式目录服务。它在各种操作系统上广泛使用,包括Windows。本文将详细介绍在Windows环境下安装LDAP服务器以及使用 LDAP 客户端工具 LdapAdmin 的步骤...

    简单的ldap客户端,可替代ldapAdmin

    **LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户账户、联系人信息、配置数据等结构化信息。它基于X.500标准,但设计得更为简单且适合互联网环境。LDAP...

    LdapAdmin---LDAP工具

    **LDAP(轻量级目录访问协议)是一种用于访问和管理分布式目录服务的协议,广泛应用于组织内部的身份验证、用户及资源管理。LdapAdmin是一款专为Windows操作系统设计的高效、稳定的LDAP管理工具,它允许管理员便捷地...

    ldap 浏览器 LdapBrowser282

    **LDAP浏览器LdapBrowser282详解** LDAP(Lightweight Directory Access Protocol)是一种用于访问目录服务的协议,常用于组织和管理用户、组、资源等信息。LdapBrowser282是一款专门针对LDAP目录服务的浏览和管理...

    spring boot集成ldap

    现在,你可以通过`UserRepository`的实例进行操作,如查询、添加、删除和更新用户。Spring Data LDAP会自动处理与LDAP服务器的交互。 在测试时,你可以创建一个`ldapTest`文件夹,其中包含模拟的测试数据或配置文件...

    使用Delphi连接LDAP服务器

    2. **创建LDAP连接对象**:在代码中,创建一个`TIdLDAP`实例,设置其属性,如`Host`为LDAP服务器的地址,`Port`为默认的389(或者如果是SSL加密的LDAPS,使用636端口),`BindDN`和`BindPassword`分别用于身份验证的...

Global site tag (gtag.js) - Google Analytics