`
天空不空
  • 浏览: 95123 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

用JAVA实现LDAP的访问

    博客分类:
  • Java
阅读更多

<一>

    LDAP现在用的越来越多,所谓LDAP既Lightweight Directory Access Protocol。关于它的一些基本知识,我在这里就不做系统的介绍了,网上有很多的资料。我主要说一下在JAVA的语言环境中,怎样来操作LDAP。
    在这里,我推荐两个工具:LDAPTemplate和JLDAP。
    网上的资料比较少,而且不少都是E文的,可能英语不太好的朋友,就很难入门了。在这我把我的经验总结一下,和大家分享。
    LDAPTemplate是基于Spring1.2.7来开发的,其用法和Spring的JDBCTemplate差不多。最初,我是用这个开源的框架来对LDAP进行操作的,但是后来由于开发工具的转变,由eclipse转到了RAD上,而RAD所用的JDK却不支持Spring1.2.7(看来网上的谣传没错,IBM总在某个阴暗的角落在和SUN作对),没办法,只好另辟蹊径。后来发现了JLDAP,经过一番研究,发现它用起来并不比LDAPTemplate复杂,但在对象持久化方面需要自己去做,而LDAPTemplate通过AttributeMappers就可以把查询到的结果转换成POJO了。

 

<二>

    下面来具体的说一下怎么用JLDAP。首先要去下载一下JLDAP,具体下载的地址可以上网去搜。下载下来以后,lib里面的是开发所要用到的包,doc里面是帮助文档API和示例程序。

    先说说怎么查询,其实查询非常的简单,如果用过JDBC连数据库的话,那么连LDAP相比起来更加的简单。
    首先建立一个LDAPConnection对象。这个对象也可以通过连接池PoolManager来获得。LDAPConnection con = new LDAPConnection();然后运行connect方法和bind方法。连接上LDAP以后,就可以通过search方法来查找数据了。示例程序如下:
LDAPConnection lc = new LDAPConnection();    
       try {    
           lc.connect("6.1.19.154",389);    
           lc.bind(LDAPConnection.LDAP_V3,"cn=xxx","xxxxxx");    
           LDAPSearchResults rs = lc.search("dc=excel,dc=com,dc=cn",LDAPConnection.SCOPE_SUB,"objectClass=*",null,false);    
           int count = 0;    
           while(rs.hasMore()){    
               LDAPEntry entry = rs.next();    
               System.out.println(entry.getDN());    
               count++;    
           }    
           System.out.println("共有"+count+"条记录。");    
       } catch (LDAPException e) {    
              
           System.err.print("连接异常!   ");    
           e.printStackTrace();    
       }   
  

<三>

    虽然LDAP主要是用来进行读操作的,但不可避免的,我们也要向其中添加一些新的数据。用JLDAP向LDAP服务器添加数据的操作也是非常简单的。

    为什么说非常简单呢,因为大体上也就是分三步。第一步,连接LDAP服务器。第二步,建立一个要添加的新的实体LDAPEntry,并添加相应的属性。第三步,通过add方法向LDAP中添加实体。
    首先说连接服务器。还是非常简单的三步:
LDAPConnection con = new LDAPConnection();    
 con.connect("hostname",hostport);    
 con.bind("version","DN","password");   
 
    连接后,可以建实体了,也就相当与为数据库添加一条新的记录。这里用到了几个类:LDAPEntry、LDAPAttribute和LDAPAttributeSet。首先建立一个LDAPAttributeSet,然后建立各种的LDAPAttribute,把他们add到LDAPAttributeSet中。然后建立一个LDAPEntry。其构造函数有两个参数,一个是这个LDAPEntry的DN,一个是他的属性集合,也就是LDAPAttributeSet。
     最后,调用LDAPConnection实例化对象的add方法,把实体添加到服务器中。然后别忘了断开连接喔。整体的示例代码如下:
LDAPAttributeSet attributeSet = new LDAPAttributeSet();   
attributeSet.add(new LDAPAttribute("objectclass", new String("inetOrgPerson")));   
attributeSet.add(new LDAPAttribute("cn", new String[] { "李", "Jim Smith", "Jimmy Smith" }));   
attributeSet.add(new LDAPAttribute("givenname", new String[] { "测试", "Jim", "Jimmy" }));   
attributeSet.add(new LDAPAttribute("sn", new String("Smith")));   
attributeSet.add(new LDAPAttribute("telephonenumber", new String("1 801 555 1212")));   
attributeSet.add(new LDAPAttribute("mail", new String("JSmith@Acme.com")));   
attributeSet.add(new LDAPAttribute("userpassword", new String("newpassword")));   
LDAPEntry entry = new LDAPEntry("cn=李,cn=Lizl,dc=excel,dc=com,dc=cn", attributeSet);   
LDAPConnection con = new LDAPConnection();   
con.connect("6.1.19.154", 389);   
con.bind(LDAPConnection.LDAP_V3, "cn=XXX", "XXXXXX");   
con.add(entry);   
System.out.println("成功的添加了一条记录!");   
con.disconnect();  
 

<四>

    这里来说一说怎么从LDAP中删除一个实体。

    首先,连接LDAP服务器,然后通过DN来删除一个实体。
    示例代码如下:
LDAPConnection con = new LDAPConnection();    
con.connect("6.1.19.154",389);    
con.bind(LDAPConnection.LDAP_V3,"cn=XXXX","XXXXXX");    
con.delete("cn=JSmith,dc=excel,dc=com,dc=cn");    
System.out.println("成功删除一条记录!");   
 
分享到:
评论
1 楼 toshibasony 2010-06-10  
此处的XX 代表什么意思啊 哥们能说明白点么 ?

相关推荐

    用JAVA实现LDAP的访问.txt

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

    JAVA中使用LDAP进行用户认证

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

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

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

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

    LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,允许客户端访问和操作目录服务。 LDAP 广泛应用于企业目录服务中,如 Active Directory、OpenLDAP 等。 Java 使用 LDAP 修改 AD 域用户密码 在...

    java 操作ldap的简单实例

    Java 语言可以通过 JNI(Java Native Interface,Java 本地接口)或纯 Java 实现来访问和操作 LDAP 服务器。 二、Java 访问 LDAP 服务器 在 Java 中,访问 LDAP 服务器需要使用 javax.naming 和 javax.naming.ldap...

    java对LDAP的增删改查

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

    java连接和验证ldap文档

    Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习...通过使用 Java 6.0 API for LDAP,可以轻松地连接和访问 LDAP 服务器,实现目录服务中的数据访问和管理。

    java连接LDAP的jar包和实例

    在Java中,我们可以使用JNDI(Java Naming and Directory Interface)和特定的LDAP提供者(如Novell的jLDAP)来实现与LDAP服务器的交互。 在标题提及的"novell-jldap-devel-2013.08.30.1433-xplat"压缩包中,包含了...

    JAVA ldap AD 域 免证书 查询 修改 删除 新增 启用 禁用 修改密码

    在这篇文章中,我们将探讨使用 JAVA 实现 LDAP 的 AD 域免证书查询、修改、删除、新增、启用、禁用和修改密码的操作。 首先,让我们了解什么是 LDAP 和 AD 域。LDAP(Lightweight Directory Access Protocol)是一...

    使用Java操作LDAP案例

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

    JAVA中使用LDAP进行用户认证.pdf

    ### JAVA中使用LDAP进行用户认证的关键知识点 #### LDAP简介与特性 LDAP,即轻量级目录访问协议(Lightweight Directory Access Protocol),源自X.500标准,但更简化且可定制。它支持TCP/IP协议,是互联网环境下...

    java操作LDAP的架包

    在Java中,我们可以使用各种库来实现与LDAP服务器的交互,这些库提供了丰富的API,使得开发人员能够轻松地进行查询、添加、删除和修改目录记录。本篇将详细介绍Java与LDAP的集成以及相关知识点。 1. LDAP简介: ...

    java连接ldap所需jar包

    1. **JNDI(Java Naming and Directory Interface)**:Java连接LDAP的基础是JNDI,它为Java应用程序提供了一个统一的接口来访问不同的命名和目录服务,包括LDAP。JNDI允许开发者以一致的方式查找、绑定、更新和管理...

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

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

    LDAP.rar_java ldap_ldap_ldap java

    LDAP在Java环境中尤其重要,因为它允许Java应用程序与LDAP服务器进行交互,实现身份验证、授权以及数据检索等功能。 **Java LDAP库** 在Java中,我们可以使用Java LDAP API来与LDAP服务器通信。这个API包含在Java...

    java LDAP+CAS单点登录

    在Java中,可以使用JNDI(Java Naming and Directory Interface)API来与LDAP服务器进行交互。 **CAS(Central Authentication Service)** CAS是一个开源的身份验证框架,由耶鲁大学开发,主要用于实现单点登录...

    java LDAP操作

    Java LDAP(轻量级目录访问协议)操作是Java开发者在处理目录服务时常见的任务,尤其在需要进行身份验证、用户管理或企业应用集成时。LDAP是一种开放标准的网络协议,用于存储和检索分布式目录信息。在Java中,我们...

    ldap 访问AD测试

    5. Java LDAP库:"java ldap 访问 Active Directory.txt"和"Java访问AD.txt"讨论的是使用Java的JNDI(Java Naming and Directory Interface)库来与AD通信。Java程序员可以利用JNDI API创建连接、执行查询、修改目录...

    java 连接ldap 服务器源码

    在Java中,我们可以使用JNDI(Java Naming and Directory Interface)来实现与LDAP服务器的交互。 首先,我们需要理解JNDI的基本概念。JNDI是Java平台的一个API,它提供了一种统一的方式来查找和管理命名和目录服务...

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

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于访问和更新目录信息。Active Directory 是 Windows 操作系统中的目录服务,提供了身份验证、授权和资源管理等功能。LDAP 可以与 ...

Global site tag (gtag.js) - Google Analytics