public static void GetADInfo() {
Hashtable HashEnv = new Hashtable();
String LDAP_URL = "ldap://192.168.16.229:389"; // LDAP访问地址 访问端口为398,不同的LDAP服务器有所不同
// String adminName = "CN=OAWebUser,CN=Users,DC=Hebmc,DC=com";//AD的用户名
//String adminName = "headquarter\\wangyaodi"; // 注意用户名的写法:domain\User
// 或 User@domain.com
String adminName = "chenshibing@headquarter"; //注意用户名的写法:domain\User 或
// User@domain.com
String adminPassword = "xxxx"; // 密码
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别
HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); // AD User
HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); // AD
// Password
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工厂类
HashEnv.put(Context.PROVIDER_URL, LDAP_URL);
try {
LdapContext ctx = new InitialLdapContext(HashEnv, null);
SearchControls searchCtls = new SearchControls(); // Create the
// search
// controls
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Specify
// the
// search
// scope
String searchFilter = "(&(objectCategory=person)(objectClass=user)(name=004*))";
//String searchFilter = "objectClass=User"; // specify the LDAP
// search filter
// String searchFilter = "objectClass=organizationalUnit";//specify
// the LDAP search filter
String searchBase = "OU=USISH,DC=usish,DC=com,DC=cn";
//String searchBase = "DC=Hebmc,DC=com"; // Specify the Base for the
// search//搜索域节点
int totalResults = 0;
// Specify the attributes to return
// String returnedAtts[] = {"memberOf"};//定制返回属性
String returnedAtts[] = { "url", "whenChanged", "employeeID",
"name", "userPrincipalName", "physicalDeliveryOfficeName",
"departmentNumber", "telephoneNumber", "homePhone",
"mobile", "department", "sAMAccountName", "whenChanged",
"mail" }; // 定制返回属性
searchCtls.setReturningAttributes(returnedAtts); // 设置返回属性集
// Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter,
searchCtls);
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
System.out
.println("************************************************");
System.out.println(sr.getName());
Attributes Attrs = sr.getAttributes();
if (Attrs != null) {
try {
for (NamingEnumeration ne = Attrs.getAll(); ne
.hasMore();) {
Attribute Attr = (Attribute) ne.next();
System.out.println(" AttributeID="
+ Attr.getID().toString());
// 读取属性值
for (NamingEnumeration e = Attr.getAll(); e
.hasMore(); totalResults++) {
System.out.println(" AttributeValues="
+ e.next().toString());
}
System.out.println(" ---------------");
// 读取属性值
Enumeration values = Attr.getAll();
if (values != null) { // 迭代
while (values.hasMoreElements()) {
System.out.println(" AttributeValues="
+ values.nextElement());
}
}
System.out.println(" ---------------");
}
} catch (NamingException e) {
System.err.println("Throw Exception : " + e);
}
}
}
System.out.println("Number: " + totalResults);
ctx.close();
}
catch (NamingException e) {
e.printStackTrace();
System.err.println("Throw Exception : " + e);
}
}
这段代码.能够从AD上活动目录.
分享到:
相关推荐
JNDI是一个接口,提供了一种标准的方式来访问命名和目录服务,而LDAP则是一种网络协议,常用于存储和查询用户账户、组信息、配置数据等结构化信息。 JNDI的主要作用是将Java应用程序与各种不同的命名和目录服务连接...
**JNDI(Java Naming and Directory Interface)**是Java平台中的一个标准API,它允许Java应用程序访问各种命名和目录服务,如LDAP(Lightweight Directory Access Protocol)。在Java应用中,JNDI通常用于管理和...
基于Java JNDI 操纵LDAP的基础实现,包括LDAP连接相关生命周期,认证的两种策略demo,条目的操作,schema的基础操作包括(attributeDefinition\objectDefinition\)但未包含相关syntaxDefinition的操纵. 没有资源分的朋友...
在本案例中,我们关注的是JNDI与Lightweight Directory Access Protocol (LDAP) 的结合使用,这是一个广泛应用于分布式环境中的目录服务协议。通过JNDI,Java开发者可以方便地与LDAP服务器进行交互,实现诸如连接、...
import com.sun.jndi.ldap.ctl.VirtualListViewControl;
在IT行业中,JNDI(Java Naming and Directory Interface)是一个标准接口,用于访问各种命名和目录服务,如LDAP(Lightweight Directory Access Protocol)。本篇内容将深入探讨如何封装JNDI操作,以便更方便地与...
### JNDI与目录服务详解 #### 一、JNDI概述 JNDI(Java Naming and Directory Interface)是Java平台提供的一种标准接口,用于访问各种命名和目录服务。它提供了一种统一的方式,使得Java应用程序可以透明地访问...
jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统dns来理解,例如我们访问百度,只要输入www.baidu.com而不是百度的IP地址. 目录服务:其实也是一种...
### JNDI与LDAP基础概念 JNDI(Java Naming and Directory Interface)是Java平台的一部分,提供了一个标准API,用于访问命名和目录系统。它允许应用程序通过一个统一的接口进行对不同命名和目录服务的查找和访问...
在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级的例子,详细介绍如何利用Spring LDAP和...
JNDI支持LDAP、RMI(Remote Method Invocation)、DNS等多种命名和目录服务,这为Java开发者提供了一种灵活的方式来管理和检索应用所需的数据。 #### 安装与配置OpenLDAP - **环境**: Windows XP - **安装包获取**...
【JNDI与LDAP简介】 Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的一组API。它为多种类型的命名和目录服务提供了统一的接口,包括 Lightweight Directory Access Protocol ...
AD ldap java集成
JNDI的强大之处在于它的灵活性和可扩展性,它可以连接到多种类型的目录和命名服务,如LDAP、RMI、DNS等,使得Java应用能够透明地利用这些服务,提高了代码的可移植性和可维护性。在企业级应用开发中,JNDI常用于配置...
通过上述示例,我们可以清晰地了解到如何在Java应用程序中使用JNDI进行LDAP操作,包括创建环境变量、设置参数、执行基本的目录操作等。然而,在实际部署时,还需关注安全性和性能优化等问题,确保应用程序既能高效...
JNDI 提供了一个统一的接口来访问不同的目录服务,包括 LDAP、DNS、NIS 等。通过 JNDI,开发者可以使用 Java 语言来访问和操作 LDAP 服务器。 在本文中,我们将讨论 Java 语言如何使用 JNDI 对 LDAP 服务器进行增删...
根据提供的信息,我们可以详细探讨如何在Windows 7环境下搭建LDAP服务器并使用JNDI进行访问。以下是关于这一过程的关键知识点: ### LDAP基础知识 **LDAP**(Lightweight Directory Access Protocol,轻量目录访问...