http://blog.csdn.net/zfpigpig/article/details/21176697
首先必须了解ldap,ldap相关可以问度娘。这边我重点要提的是dn(distinguished name),通俗的来说就是唯一标示。
然后现在可以先下一个ldapadmin,通过ldapadmin先连接已经配置好的ldap,下面是微软ad的图。
比如administrator这个用户的dn就是cn=administrator,cn=users,dc=ds-66,dc=com(简单来说就是全路径+域的形式)
最后就可以编码了,连接的代码比较简单,使用fliter的查询部门稍微复杂点,不过仔细看看也很容易理解,如下。
- public static void main(String[] args) {
- String url = "ldap://10.1.0.66:389/";
- String domain = "dc=ds-66,dc=com";
- String user = "cn=administrator,cn=users";
- String password = "111111";
- Hashtable<String, String> env = new Hashtable<String, String>();
- env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP 工厂
- env.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别
- env.put(Context.PROVIDER_URL, url);
- env.put(Context.SECURITY_PRINCIPAL, user+","+domain); // 填DN
- env.put(Context.SECURITY_CREDENTIALS, password); // AD Password
- env.put("java.naming.ldap.attributes.binary", "objectSid objectGUID");
- LdapContext ldapCtx = null;
- try {
- ldapCtx = new InitialLdapContext(env , null);
- queryGroup(ldapCtx);
- //queryUser(ldapCtx);
- } catch (NamingException e) {
- e.printStackTrace();
- } finally {
- if(ldapCtx != null) {
- try {
- ldapCtx.close();
- } catch (NamingException e) {
- }
- }
- }
- }
- private static void queryGroup(LdapContext ldapCtx) throws NamingException {
- SearchControls searchCtls = new SearchControls();
- searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- String searchFilter = "objectClass=organizationalUnit";
- String searchBase = "ou=myDeptSubDept,ou=myDept,dc=DS-66,dc=com";
- String returnedAtts[] = {"distinguishedName", "objectGUID", "name"};
- searchCtls.setReturningAttributes(returnedAtts);
- NamingEnumeration<SearchResult> answer = ldapCtx.search(searchBase, searchFilter, searchCtls);
- while (answer.hasMoreElements()) {
- SearchResult sr = answer.next();
- Attributes Attrs = sr.getAttributes();
- if (Attrs != null) {
- NamingEnumeration<?> ne = Attrs.getAll();
- while(ne.hasMore()) {
- Attribute Attr = (Attribute)ne.next();
- String name = Attr.getID();
- Enumeration<?> values = Attr.getAll();
- if (values != null) { // 迭代
- while (values.hasMoreElements()) {
- String value = "";
- if("objectGUID".equals(name)) {
- value = UUID.nameUUIDFromBytes((byte[]) values.nextElement()).toString();
- } else {
- value = (String)values.nextElement();
- }
- System.out.println(name + " " + value);
- }
- }
- }
- System.out.println("=====================");
- }
- }
- }
相关推荐
Java连接LDAP(Lightweight Directory Access Protocol)是一种常见的任务,用于从目录服务中检索或更新信息。在Java中,实现这个功能通常需要导入特定的JAR(Java Archive)库。以下是一些关于Java连接LDAP的关键...
Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的...
Java连接LDAP(Lightweight Directory Access Protocol)是一种常见的任务,用于在分布式环境中管理和访问目录服务信息。这个主题涉及几个关键知识点,包括Java LDAP API、SSL安全连接以及如何通过代码操作LDAP目录...
Java连接LDAP服务器是一种常见的任务,尤其在企业级应用中,用于身份验证、用户管理或访问控制。LDAP(轻量级目录访问协议)是一种基于X.500标准的目录服务协议,它允许快速查找和管理分布式数据库中的信息。在Java...
**LDAP搭建及其Java代码连接** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储和检索用户信息、组织结构等元数据。它采用层次化的树状结构,便于管理和查找。在IT领域,...
### 使用Java实现LDAP访问 #### 一、简介 在企业级应用开发中,LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是一种常见的用于管理组织机构中的用户账户信息的标准协议。通过LDAP,开发者可以...
- **连接LDAP服务器**:使用`InitialDirContext`类创建一个上下文对象,需要提供连接参数,如URL和凭据。 ```java Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, ...
ht.put(Context.PROVIDER_URL, "ldap://192.168.66.137:389"); ht.put(Context.SECURITY_AUTHENTICATION, "simple"); ht.put(Context.SECURITY_PRINCIPAL, "cn=root,o=TopSec");//cn=root,o=TopSec ou=people,o=...
在 Java 中,开发者可以使用 JNDI 的 LDAP 实现来连接 LDAP 服务器,并执行各种操作。JNDI 提供了一个统一的接口来访问不同的目录服务,包括 LDAP、DNS、NIS 等。通过 JNDI,开发者可以使用 Java 语言来访问和操作 ...
在 Java 中,我们可以使用 LDAP 客户端库来连接到 Active Directory 域控制器,并对用户密码进行修改。下面是一个简单的示例代码: ```java public static void main(String[] args) throws UnknownHostException, ...
**在学习和使用Java进行LDAP操作时,还需要了解关于权限、SSL/TLS安全连接、错误处理和性能优化等方面的知识。同时,理解目录服务的基础概念,如DN、RDN(Relative Distinguished Name)、属性类型和语法等,也是...
3. 连接LDAP服务器:在创建`InitialDirContext`时,指定使用SSL上下文。 在提供的压缩包中,包含了Java源码和文档,这些资源可以帮助开发者更好地理解和实现上述过程。源码可能会包括类,如`LdapClient`,它封装了...
这些包提供了访问 LDAP 服务器的基本功能,例如连接LDAP 服务器、执行搜索操作、获取搜索结果等。 在示例代码中,我们首先 import 了必要的包,包括 java.util.Properties、javax.naming.*、javax.naming.ldap.* 和...
JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...
8、在编写 Java 代码时,需要使用 Hashtable 对象来存储 LDAP 连接的参数,使用 Socket 对象来连接 LDAP 服务器,并使用 SSL/TLS 加密协议来确保密码修改的安全性。 9、在编写 Java 代码时,需要使用相关的 LDAP ...
3. 连接LDAP服务器: 要连接到LDAP服务器,首先需要创建一个初始上下文(Initial Context),这通常通过`InitialDirContext`类实现。然后,提供必要的连接参数,如服务器地址、端口、用户名和密码。 4. 搜索LDAP:...
1. **InitialDirContext**: 这是JNDI中用于初始化目录上下文的主要类,通过它我们可以连接到 LDAP 服务器。创建实例通常需要一个环境属性映射,其中包含URL、用户名和密码等信息。 ```java Properties env = new ...
总的来说,Java通过Ldap操作AD域涉及网络连接、身份验证、目录查询以及可能的SSL安全通信。理解这些概念和API的使用是实现AD域集成的关键。通过以上介绍和示例代码,你应该能够开始编写自己的AD域操作功能。记得在...
在标题中提到的"jdbc连接 ldap jar 包",指的是使用Java编程语言并通过JDBC来实现与LDAP服务器的连接和操作的特定库。这两个jar包——ldap.jar和jdbcLdap.jar,就是这样的工具。ldap.jar可能包含了LDAP操作的基础库...