`
kavy
  • 浏览: 890972 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java连接ldap

 
阅读更多

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的查询部门稍微复杂点,不过仔细看看也很容易理解,如下。

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public static void main(String[] args) {  
  2.     String url = "ldap://10.1.0.66:389/";  
  3.     String domain = "dc=ds-66,dc=com";  
  4.     String user = "cn=administrator,cn=users";  
  5.     String password = "111111";  
  6.     Hashtable<String, String> env = new Hashtable<String, String>();  
  7.     env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP 工厂  
  8.     env.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别  
  9.     env.put(Context.PROVIDER_URL, url);  
  10.     env.put(Context.SECURITY_PRINCIPAL, user+","+domain); //  填DN  
  11.     env.put(Context.SECURITY_CREDENTIALS, password); // AD Password  
  12.     env.put("java.naming.ldap.attributes.binary""objectSid objectGUID");  
  13.     LdapContext ldapCtx = null;  
  14.     try {  
  15.         ldapCtx = new InitialLdapContext(env , null);  
  16.         queryGroup(ldapCtx);  
  17.         //queryUser(ldapCtx);         
  18.           
  19.     } catch (NamingException e) {  
  20.         e.printStackTrace();  
  21.     } finally {  
  22.         if(ldapCtx != null) {  
  23.             try {  
  24.                 ldapCtx.close();  
  25.             } catch (NamingException e) {  
  26.             }  
  27.         }  
  28.     }  
  29. }  
  30.   
  31. private static void queryGroup(LdapContext ldapCtx) throws NamingException {  
  32.     SearchControls searchCtls = new SearchControls();  
  33.     searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);  
  34.     String searchFilter = "objectClass=organizationalUnit";  
  35.     String searchBase = "ou=myDeptSubDept,ou=myDept,dc=DS-66,dc=com";  
  36.     String returnedAtts[] = {"distinguishedName""objectGUID""name"};  
  37.     searchCtls.setReturningAttributes(returnedAtts);  
  38.     NamingEnumeration<SearchResult> answer = ldapCtx.search(searchBase, searchFilter, searchCtls);  
  39.     while (answer.hasMoreElements()) {  
  40.         SearchResult sr = answer.next();  
  41.         Attributes Attrs = sr.getAttributes();  
  42.         if (Attrs != null) {  
  43.             NamingEnumeration<?> ne = Attrs.getAll();  
  44.             while(ne.hasMore()) {  
  45.                 Attribute Attr = (Attribute)ne.next();  
  46.                 String name = Attr.getID();  
  47.                 Enumeration<?> values = Attr.getAll();  
  48.                 if (values != null) { // 迭代  
  49.                     while (values.hasMoreElements()) {  
  50.                         String value = "";  
  51.                         if("objectGUID".equals(name)) {  
  52.                             value = UUID.nameUUIDFromBytes((byte[]) values.nextElement()).toString();  
  53.                         } else {  
  54.                             value = (String)values.nextElement();  
  55.                         }  
  56.                         System.out.println(name + " " + value);  
  57.                     }  
  58.                 }  
  59.             }  
  60.             System.out.println("=====================");  
  61.         }  
  62.     }  
  63.       
  64. }  

 

分享到:
评论

相关推荐

    java连接ldap所需jar包

    Java连接LDAP(Lightweight Directory Access Protocol)是一种常见的任务,用于从目录服务中检索或更新信息。在Java中,实现这个功能通常需要导入特定的JAR(Java Archive)库。以下是一些关于Java连接LDAP的关键...

    java连接和验证ldap文档

    Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的...

    java连接LDAP的jar包和实例

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

    java 连接ldap 服务器源码

    Java连接LDAP服务器是一种常见的任务,尤其在企业级应用中,用于身份验证、用户管理或访问控制。LDAP(轻量级目录访问协议)是一种基于X.500标准的目录服务协议,它允许快速查找和管理分布式数据库中的信息。在Java...

    LDAP搭建及其Java代码连接

    **LDAP搭建及其Java代码连接** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储和检索用户信息、组织结构等元数据。它采用层次化的树状结构,便于管理和查找。在IT领域,...

    用JAVA实现LDAP的访问.txt

    ### 使用Java实现LDAP访问 #### 一、简介 在企业级应用开发中,LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是一种常见的用于管理组织机构中的用户账户信息的标准协议。通过LDAP,开发者可以...

    java LDAP操作

    - **连接LDAP服务器**:使用`InitialDirContext`类创建一个上下文对象,需要提供连接参数,如URL和凭据。 ```java Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, ...

    java链接ldap

    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对LDAP的增删改查

    在 Java 中,开发者可以使用 JNDI 的 LDAP 实现来连接 LDAP 服务器,并执行各种操作。JNDI 提供了一个统一的接口来访问不同的目录服务,包括 LDAP、DNS、NIS 等。通过 JNDI,开发者可以使用 Java 语言来访问和操作 ...

    java使用ldap修改ad域用户密码

    在 Java 中,我们可以使用 LDAP 客户端库来连接到 Active Directory 域控制器,并对用户密码进行修改。下面是一个简单的示例代码: ```java public static void main(String[] args) throws UnknownHostException, ...

    Ldap文件读取工具(Java)

    **在学习和使用Java进行LDAP操作时,还需要了解关于权限、SSL/TLS安全连接、错误处理和性能优化等方面的知识。同时,理解目录服务的基础概念,如DN、RDN(Relative Distinguished Name)、属性类型和语法等,也是...

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

    3. 连接LDAP服务器:在创建`InitialDirContext`时,指定使用SSL上下文。 在提供的压缩包中,包含了Java源码和文档,这些资源可以帮助开发者更好地理解和实现上述过程。源码可能会包括类,如`LdapClient`,它封装了...

    java 操作ldap的简单实例

    这些包提供了访问 LDAP 服务器的基本功能,例如连接LDAP 服务器、执行搜索操作、获取搜索结果等。 在示例代码中,我们首先 import 了必要的包,包括 java.util.Properties、javax.naming.*、javax.naming.ldap.* 和...

    JAVA中使用LDAP进行用户认证

    JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...

    java使用ldap修改ad域用户密码收集.pdf

    8、在编写 Java 代码时,需要使用 Hashtable 对象来存储 LDAP 连接的参数,使用 Socket 对象来连接 LDAP 服务器,并使用 SSL/TLS 加密协议来确保密码修改的安全性。 9、在编写 Java 代码时,需要使用相关的 LDAP ...

    java操作LDAP的架包

    3. 连接LDAP服务器: 要连接到LDAP服务器,首先需要创建一个初始上下文(Initial Context),这通常通过`InitialDirContext`类实现。然后,提供必要的连接参数,如服务器地址、端口、用户名和密码。 4. 搜索LDAP:...

    使用Java操作LDAP案例

    1. **InitialDirContext**: 这是JNDI中用于初始化目录上下文的主要类,通过它我们可以连接到 LDAP 服务器。创建实例通常需要一个环境属性映射,其中包含URL、用户名和密码等信息。 ```java Properties env = new ...

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

    总的来说,Java通过Ldap操作AD域涉及网络连接、身份验证、目录查询以及可能的SSL安全通信。理解这些概念和API的使用是实现AD域集成的关键。通过以上介绍和示例代码,你应该能够开始编写自己的AD域操作功能。记得在...

    jdbc连接 ldap jar 包

    在标题中提到的"jdbc连接 ldap jar 包",指的是使用Java编程语言并通过JDBC来实现与LDAP服务器的连接和操作的特定库。这两个jar包——ldap.jar和jdbcLdap.jar,就是这样的工具。ldap.jar可能包含了LDAP操作的基础库...

Global site tag (gtag.js) - Google Analytics