一、简介

Lightweight Directory Access Protocol (LDAP),轻型目录访问协议是一个访问在线目录服务的协议。下面的例子中简单介绍在java中队ldap的增删该查功能。目录结构为:

CD=CAS,DC=MYDC

--cn=users

----uid=zhangsan

二、示例1、通过LdapContext连接ldap

/**

* 连接LDAP

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public LdapContext connetLDAP() throws NamingException {

// 连接Ldap需要的信息

String ldapFactory = "com.sun.jndi.ldap.LdapCtxFactory";

String ldapUrl = "ldap:/IP:port";// url

String ldapAccount = "cn=root"; // 用户名

String ldapPwd = "password";//密码

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, ldapFactory);

// LDAP server

env.put(Context.PROVIDER_URL, ldapUrl);

env.put(Context.SECURITY_AUTHENTICATION, "simple");

env.put(Context.SECURITY_PRINCIPAL, ldapAccount);

env.put(Context.SECURITY_CREDENTIALS, ldapPwd);

env.put("java.naming.referral", "follow");

LdapContext ctxTDS = new InitialLdapContext(env, null);

return ctxTDS;

}

2、增加用户zhangsan

// 添加

public void testAdd() throws Exception {

LdapContext ctx = connetLDAP();

Attributes attrs = new BasicAttributes(true);

Attribute objclass = new BasicAttribute("objectclass");

// 添加ObjectClass

String[] attrObjectClassPerson = { "inetOrgPerson", "organizationalPerson", "person", "top" };

Arrays.sort(attrObjectClassPerson);

for (String ocp : attrObjectClassPerson) {

objclass.add(ocp);

}

attrs.put(objclass);

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

// 密码处理

// attrs.put("uid", uid);

attrs.put("cn", uid);

attrs.put("sn", uid);

attrs.put("displayName", "张三");

attrs.put("mail", "abc@163.com");

attrs.put("description", "");

attrs.put("userPassword", "Passw0rd".getBytes("UTF-8"));

ctx.createSubcontext(userDN, attrs);

}

3、删除用户zhangsan

//删除

public void testRemove() throws Exception {

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

ctx.destroySubcontext(userDN);

}

4、修改zhangsan的邮件地址

//修改

public boolean testModify() throws Exception {

boolean result = true;

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

Attributes attrs = new BasicAttributes(true);

attrs.put("mail", "zhangsan@163.com");

ctx.modifyAttributes(userDN, DirContext.REPLACE_ATTRIBUTE, attrs);

return result;

}

5、查找用户

//查询

public void testSearch() throws Exception {

LdapContext ctx = connetLDAP();

// 设置过滤条件

String uid = "zhangsan";

String filter = "(&(objectClass=top)(objectClass=organizationalPerson)(uid=" + uid + "))";

// 限制要查询的字段内容

String[] attrPersonArray = { "uid", "userPassword", "displayName", "cn", "sn", "mail", "description" };

SearchControls searchControls = new SearchControls();

searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);

// 设置将被返回的Attribute

searchControls.setReturningAttributes(attrPersonArray);

// 三个参数分别为:

// 上下文;

// 要搜索的属性,如果为空或 null,则返回目标上下文中的所有对象;

// 控制搜索的搜索控件,如果为 null,则使用默认的搜索控件

NamingEnumeration answer = ctx.search("cn=users,dc=cas,dc=mydc", filter.toString(), searchControls);

// 输出查到的数据

while (answer.hasMore()) {

SearchResult result = answer.next();

NamingEnumeration extends Attribute> attrs = result.getAttributes().getAll();

while (attrs.hasMore()) {

Attribute attr = attrs.next();

System.out.println(attr.getID() + "=" + attr.get());

}

System.out.println("============");

}

}

java ldap 实例_JAVA_基本LDAP操作实例相关推荐

  1. java 通过jdbc驱动连接hive操作实例

    http://blog.csdn.net/ghychina/article/details/7429577 转自:http://blog.csdn.net/a221133/article/detail ...

  2. java mysql blob 存储图片,Java实现用Mysql存取图片操作实例

    1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...

  3. php分页实例下载,PHP文件操作实例总结【文件上传、下载、分页】

    本文实例讲述了PHP文件操作.分享给大家供大家参考,具体如下: 1.文件上传 上传域: input type="file" 普通文本框(text.password.textarea ...

  4. linux 防火墙设置ftp端口,CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关...

    CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables status 停止 ...

  5. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  6. java 对象读写_java 对象输入输出流读写文件的操作实例

    java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Ser ...

  7. java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; ...

  8. Java Redis操作实例

    Java Redis操作实例 (2016-10-04 18:53:51) 转载▼   分类: Java 转自:http://www.cnblogs.com/edisonfeng/p/3571870.h ...

  9. java sftp 实例_JAVA实现SFTP的实例

    用Java EE 5实现的网上书店实例  李力 (ada.li@sun.com) 2007/10/23  本教程介绍了如何使用NetBeans IDE 以及GlassFish 构建一个典型的Java ...

最新文章

  1. 面试官问:服务的心跳机制与断线重连,Netty底层是怎么实现的?懵了
  2. java spring怎么运行_java – 如何使用spring异步运行方法?
  3. Samba常用配置及GUEST访问
  4. php 输出rtf,有没有办法在PHP中访问压缩RTF和输出RTF代码
  5. 线程池应该设置多少核心线程数——Java多线程系列学习笔记
  6. edittext无法获取焦点_小黑鞋强势回归,用帅气拉回时尚焦点
  7. react学习(42)----react中的jsx表达对象
  8. ie7下scroll不触发,滚动位置不对的问题
  9. each iteration和 each occurrunce的区别
  10. 《基于多支持向量机综合的电力系统暂态稳定评估》总结
  11. oracle12c下载安装
  12. spring boot添加redis过期策略
  13. 将文件复制到临时文件夹
  14. 路由器连接猫服务器未响应,猫能连上路由器连不上怎么回事【解决方法】
  15. 2019软考总结-UML
  16. 实现笔记本键盘如何上锁和解锁
  17. 高考还有几天c语言作业,高考考几天
  18. 开源的IoT物联网平台大比拼
  19. leetcode简单1742/867
  20. iOS 图片涂鸦功能

热门文章

  1. Keras-6 IMDB, a binary classification example
  2. linux下的正则表达式
  3. redis原理解析与案例分享
  4. iOS开发 - iOS10隐私数据访问问题
  5. linux sz rz 下载与上传命令
  6. 高可用Hadoop平台-Oozie工作流之Hadoop调度
  7. 开发者必看:iOS应用审核的通关秘籍
  8. 状态转移表+State模式
  9. 山西专科学校计算机专业排名,河南单招计算机专业专科学校排名
  10. mysql数据库事务的概念_如何理解数据库事务中的一致性的概念?