`

java代码遍历ldap

阅读更多
package cn.com.icinfo.zuinfo.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

public class BianLiLdap {
	public static StringBuffer getLdapValue(Attributes oAttrs, String proname)
			throws Exception {
		StringBuffer result = new StringBuffer();
		Attribute attrpro = oAttrs.get(proname);
		if (attrpro == null) {
			result.append("");
			return result;
		}
		NamingEnumeration attrpros = attrpro.getAll();
		try {
			while (attrpros.hasMore()) {
				String pro = (String) attrpros.next();
				result.append(pro+";");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (attrpros != null) {
				attrpros.close();
			}
		}
		return result;
	}

	public static List<HashMap> getMultAttrsValue() {
		Hashtable coninfo = new Hashtable();
		coninfo.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
		coninfo.put(Context.REFERRAL, "follow");
		coninfo.put(Context.PROVIDER_URL, "ldap://127.0.0.1/dc=example,dc=edu,dc=cn");

		coninfo.put(Context.SECURITY_PROTOCOL, "plain");
		coninfo.put("java.naming.ldap.version", "3");
		coninfo.put(Context.SECURITY_AUTHENTICATION, "simple");
		coninfo.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
		coninfo.put(Context.SECURITY_CREDENTIALS, "admin123");
		coninfo.put("com.sun.jndi.ldap.connect.pool", "true");
		
		DirContext ctx = null;
		try {
			ctx = new InitialDirContext(coninfo);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		NamingEnumeration answer = null;
		try {
			List results = new ArrayList();
			SearchControls ctls = new SearchControls();
			//ctls.setReturningAttributes(attrIDs);
			ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
			answer = ctx.search("", "(objectclass=*)", ctls);
			// get it's original attributes
			Attributes oAttrs = null;
			if (answer != null) {
				while (answer.hasMore()) {
					HashMap result = new HashMap();
					SearchResult sr = (SearchResult) answer.next();
					System.out.println("((("+sr.getName()+")))");
					oAttrs = sr.getAttributes();
					/*NamingEnumeration ne = oAttrs.getAll();
					while(ne.hasMore()){
						String attr = ne.next().toString();
						System.out.println(attr);
					}*/
					NamingEnumeration IDs = oAttrs.getIDs();
					while(IDs.hasMore()){
						String attID = IDs.next().toString();
						StringBuffer attValue = getLdapValue(oAttrs, attID);
						result.put(attID, attValue);
						System.out.println(attID+"="+attValue);
					}
					results.add(result);
					System.out.println("======================================");
				}
			}
			return results;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			if (answer != null) {
				try {
					answer.close();
				} catch (NamingException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		getMultAttrsValue();
	}

}
分享到:
评论

相关推荐

    JAVA通过LDAP+SSL(证书)实现用户和组织(部门)增删改查.zip

    本文将深入探讨如何使用Java通过LDAP(轻量级目录访问协议)和SSL(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...

    3.3.01_LDAP Java API 使用指南.doc

    在Java中,可以使用Java LDAP API来与LDAP服务器进行交互,执行查询、添加、删除、修改等操作。本指南将详细介绍如何使用Java LDAP API。 ### 1. LDAP简介 LDAP目录服务是一种存储组织数据的方式,它不同于传统的...

    使用Java操作LDAP案例

    本案例将介绍如何使用Java编程语言操作LDAP服务器,实现用户登录验证等功能。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface)框架,它是Java提供的一套标准API,用于与各种命名和目录服务...

    JAVA使用Ldap操作AD域的方法示例

    在本文中,我们将深入探讨如何使用Java通过Ldap与Active Directory (AD)域进行交互。首先,我们需要了解AD域是一个集中式服务,用于管理网络中的用户、计算机和其他资源的身份和权限。Ldap(轻量级目录访问协议)是...

    java实现对ladp增 删 改 查操作,以及如何按目录遍历节点

    java实现对ladp增 删 改 查操作,以及如何按目录遍历节点,其中有一点设计业务的代码,但是不影响对ladp操作的代码,代码很干净

    LDAP_Java_API_使用指南.rar

    **LDAP (轻量级目录访问协议) 是一种用于存储和检索目录信息的标准协议,它以树形结构组织数据。...记住,实践是检验理解的最好方式,尝试编写并运行上述代码,以加深对LDAP与Java结合运用的理解。

    ldap相关代码例子.rar

    1. **ApplicationTest.java** - 这是一个Java源代码文件,很可能是用于演示如何在Java应用程序中与LDAP服务器进行交互。在Java中,我们通常使用JNDI(Java Naming and Directory Interface)API来访问LDAP目录。...

    LDAP以及JAVA方法操作详解.doc

    以上代码展示了如何使用Java与LDAP服务器进行基本的交互。实际应用中,通常会封装这些操作到更高级别的库或服务中,以提高代码的可读性和复用性。同时,理解并熟练掌握JNDI和LDAP的使用对于构建高效的企业级身份验证...

    novell ldap开发包(java)

    Novell LDAP开发包是专为Java开发者设计的一个工具集,用于与 Lightweight Directory Access Protocol (LDAP) 服务进行交互。LDAP是一种开放的标准协议,用于存储和检索分布式目录信息,广泛应用于企业身份验证、...

    ldap java 源码

    在Java开发中,我们通常使用Java LDAP API来与LDAP服务器进行交互,实现用户登录、查询、修改等操作。本源码正是一个基于Java实现的与LDAP服务器通信的示例,它有助于开发者理解如何在Java环境中建立和处理LDAP连接...

    JAVA上百实例源码以及开源项目源代码

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

    Ldap的api函数集

    在上述代码中,我们首先创建一个`InitialDirContext`实例来连接到LDAP服务器。然后,我们设置搜索控制,指定要执行的搜索类型为子树范围,并提供一个过滤器来查找具有“person”对象类的条目。最后,我们遍历搜索...

    LDAP验证的部分代码

    本文将深入解析一段关于LDAP登录验证的Java代码,帮助读者理解其核心逻辑及实现细节。 #### 二、关键类与方法介绍 1. **UserAuthenticate 类**: - 这个类是该段代码的核心,包含了进行LDAP认证的主要方法。 - ...

    ldap的一个实例

    本实例将深入探讨如何使用Java与LDAP进行交互,并创建一个小型的项目。 1. **LDAP基础知识** - LDAP目录结构:类似于文件系统,由DN(Distinguished Name)定义,例如`cn=John Doe, ou=Employees, o=MyCompany, c=...

    Ldap实例源码

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

    LDAP 书籍

    本资料主要关注使用Java进行LDAP编程。 **LDAP目录结构**: 在LDAP中,数据以树形结构存储,每个节点称为条目(Entry),具有唯一的DN(Distinguished Name)。DN类似于文件系统的路径,由一系列CN(Common Name)...

    Windows_7_下搭建LDAP服务器并使用JNDI

    以下是一个简单的JNDI连接LDAP服务器的Java代码示例: ```java import javax.naming.*; import javax.naming.directory.*; public class LDAPExample { public static void main(String[] args) { try { // ...

    Spring+ldap

    在传统Java LDAP编程中,执行一个简单的人员查询操作可能涉及到多个步骤,包括创建`DirContext`、设置搜索控制、执行搜索、遍历结果集等。这一过程不仅繁琐,而且容易出错,特别是当涉及到异常处理和资源管理时。 ...

    JAVA_API1.6文档(中文)

    javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net...

    novellLDAPjar

    Novell LDAP(Lightweight Directory Access Protocol)jar是用于与LDAP目录服务进行交互的Java库。这个压缩包包含两个重要的jar文件:`ldap.jar`和`utilities.jar`,它们提供了丰富的功能,帮助开发者在Java应用...

Global site tag (gtag.js) - Google Analytics