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(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...
在Java中,可以使用Java LDAP API来与LDAP服务器进行交互,执行查询、添加、删除、修改等操作。本指南将详细介绍如何使用Java LDAP API。 ### 1. LDAP简介 LDAP目录服务是一种存储组织数据的方式,它不同于传统的...
本案例将介绍如何使用Java编程语言操作LDAP服务器,实现用户登录验证等功能。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface)框架,它是Java提供的一套标准API,用于与各种命名和目录服务...
在本文中,我们将深入探讨如何使用Java通过Ldap与Active Directory (AD)域进行交互。首先,我们需要了解AD域是一个集中式服务,用于管理网络中的用户、计算机和其他资源的身份和权限。Ldap(轻量级目录访问协议)是...
java实现对ladp增 删 改 查操作,以及如何按目录遍历节点,其中有一点设计业务的代码,但是不影响对ladp操作的代码,代码很干净
**LDAP (轻量级目录访问协议) 是一种用于存储和检索目录信息的标准协议,它以树形结构组织数据。...记住,实践是检验理解的最好方式,尝试编写并运行上述代码,以加深对LDAP与Java结合运用的理解。
1. **ApplicationTest.java** - 这是一个Java源代码文件,很可能是用于演示如何在Java应用程序中与LDAP服务器进行交互。在Java中,我们通常使用JNDI(Java Naming and Directory Interface)API来访问LDAP目录。...
以上代码展示了如何使用Java与LDAP服务器进行基本的交互。实际应用中,通常会封装这些操作到更高级别的库或服务中,以提高代码的可读性和复用性。同时,理解并熟练掌握JNDI和LDAP的使用对于构建高效的企业级身份验证...
Novell LDAP开发包是专为Java开发者设计的一个工具集,用于与 Lightweight Directory Access Protocol (LDAP) 服务进行交互。LDAP是一种开放的标准协议,用于存储和检索分布式目录信息,广泛应用于企业身份验证、...
在Java开发中,我们通常使用Java LDAP API来与LDAP服务器进行交互,实现用户登录、查询、修改等操作。本源码正是一个基于Java实现的与LDAP服务器通信的示例,它有助于开发者理解如何在Java环境中建立和处理LDAP连接...
Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
在上述代码中,我们首先创建一个`InitialDirContext`实例来连接到LDAP服务器。然后,我们设置搜索控制,指定要执行的搜索类型为子树范围,并提供一个过滤器来查找具有“person”对象类的条目。最后,我们遍历搜索...
本文将深入解析一段关于LDAP登录验证的Java代码,帮助读者理解其核心逻辑及实现细节。 #### 二、关键类与方法介绍 1. **UserAuthenticate 类**: - 这个类是该段代码的核心,包含了进行LDAP认证的主要方法。 - ...
本实例将深入探讨如何使用Java与LDAP进行交互,并创建一个小型的项目。 1. **LDAP基础知识** - LDAP目录结构:类似于文件系统,由DN(Distinguished Name)定义,例如`cn=John Doe, ou=Employees, o=MyCompany, c=...
在这个"LDAP实例源码"中,我们可以看到一个用纯Java实现的示例,它展示了如何与LDAP服务器进行交互。下面我们将深入探讨这个主题。 首先,源码中可能包含了使用Java LDAP API(JNDI,Java Naming and Directory ...
本资料主要关注使用Java进行LDAP编程。 **LDAP目录结构**: 在LDAP中,数据以树形结构存储,每个节点称为条目(Entry),具有唯一的DN(Distinguished Name)。DN类似于文件系统的路径,由一系列CN(Common Name)...
以下是一个简单的JNDI连接LDAP服务器的Java代码示例: ```java import javax.naming.*; import javax.naming.directory.*; public class LDAPExample { public static void main(String[] args) { try { // ...
在传统Java LDAP编程中,执行一个简单的人员查询操作可能涉及到多个步骤,包括创建`DirContext`、设置搜索控制、执行搜索、遍历结果集等。这一过程不仅繁琐,而且容易出错,特别是当涉及到异常处理和资源管理时。 ...
javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net...
Novell LDAP(Lightweight Directory Access Protocol)jar是用于与LDAP目录服务进行交互的Java库。这个压缩包包含两个重要的jar文件:`ldap.jar`和`utilities.jar`,它们提供了丰富的功能,帮助开发者在Java应用...