1 案例描述
公司平台使用LDAP来储存企业或用户的信息,在系统的运行过程中需要对LDAP存储的信息进行相关的访问和操作,那么在Java中是如何操作LDAP的呢?
2 案例分析
LDAP是一个得到关于人或者资源的集中、静态数据的快速方式,是一种存储模式和访问协议。
UnboundID LDAP SDK for Java是一个快速、综合易用的 LDAP 目录服务的 Java 客户端API,它提供了一套快速、强大、用户友好并且开源的Java API来与LDAP目录服务器交互,可读写 LDIF、使用BASE64 和 ASN.1 BER 进行编码解码,支持安全通信等特性,要求 Java 1.5 或者更新版本支持,同时也支持 Android 平台。与其它基于Java的LDAP APIs相比,它具有更好的性能、更易于使用,功能更多,而且还是唯一一个不断有活跃开发和增强的SDK。
在软件开发中,对数据的操作无非就是增加、删除、修改、查询等4种操作,对LDAP的操作也一样。下面我们一起探讨在Java中如何使用UnboundID LDAP SDK操作LDAP。
3 解决过程
3.1 准备
1、Java客户端API(UnboundID LDAP SDK for Java)
下载地址 http://sourceforge.net/projects/ldap-sdk/files/
2、LDAP客户端(Apache Directory Studio)
下载地址 http://directory.apache.org/studio/
3.2 定义参数
- // 当前配置信息
- private static String ldapHost = "172.16.160.196";
- private static int ldapPort = 389;
- private static String ldapBindDN = "cn=manager,dc=com";;
- private static String ldapPassword = "******";
- private static LDAPConnection connection = null;
3.3 建立连接
- /** 连接LDAP */
- public static void openConnection() {
- if (connection == null) {
- try {
- connection = new LDAPConnection(ldapHost, ldapPort, ldapBindDN, ldapPassword);
- } catch (Exception e) {
- System.out.println("连接LDAP出现错误:\n" + e.getMessage());
- }
- }
- }
3.4 创建数据
1、创建DC对象
- /** 创建DC */
- public static void createDC(String baseDN, String dc) {
- String entryDN = "dc=" + dc + "," + baseDN;
- try {
- // 连接LDAP
- openConnection();
- SearchResultEntry entry = connection.getEntry(entryDN);
- if (entry == null) {
- // 不存在则创建
- ArrayList<Attribute> attributes = new ArrayList<Attribute>();
- attributes.add(new Attribute("objectClass", "top", "organization", "dcObject"));
- attributes.add(new Attribute(