- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Hashtable;
- import java.util.List;
- import java.util.Map;
- import javax.naming.Context;
- import javax.naming.NamingEnumeration;
- import javax.naming.directory.Attributes;
- import javax.naming.directory.SearchControls;
- import javax.naming.directory.SearchResult;
- import javax.naming.ldap.InitialLdapContext;
- import javax.naming.ldap.LdapContext;
- /**
- * LDAP 连接
- */
- public class LDAPConnection {
- private String baseDN;
- private String filter;
- private String[] attributes;
- private Hashtable<String, String> env = null;
- private static LDAPConnection lc;
- private LDAPConnection() {
- //搜索根节点
- baseDN = "******";
- //要查询的属性列
- attributes = new String[]{"cn"};
- //过滤条件
- if ((filter == null) || (filter == ""))
- filter = "objectclass=*";
- }
- public static LDAPConnection getInstance() {
- if (lc == null) {
- lc = new LDAPConnection();
- }
- return lc;
- }
- /**
- * 建立LDAP连接
- * @return boolean
- */
- private LdapContext getLdapContext() {
- env = new Hashtable<String, String>();
- env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
- env.put(Context.PROVIDER_URL, "ldap://*****:389");
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
- env.put(Context.SECURITY_CREDENTIALS, "123456");
- env.put(Context.SECURITY_PRINCIPAL, "****");
- try {
- return new InitialLdapContext(env, null);
- } catch (Exception e) {
- System.out.println("连接服务器失败!");
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 获取用户信息
- * @return List<Map>
- */
- public List<Map> getUsers() {
- LdapContext ctx = getLdapContext();
- if(ctx == null){
- return null;
- }
- List<Map> list = new ArrayList<Map>();
- try {
- SearchControls constraints = new SearchControls();
- constraints.setReturningAttributes(attributes);
- constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
- NamingEnumeration<?> en = ctx.search(baseDN, filter, constraints);
- while (en != null && en.hasMoreElements()) {
- Object obj = en.nextElement();
- if (obj instanceof SearchResult) {
- SearchResult si = (SearchResult) obj;
- Attributes attrs = si.getAttributes();
- Map<String, Object> map = new HashMap<String, Object>();
- for (int i = 0; i < attributes.length; i++) {
- String attributeName = attributes[i];
- if(attrs.get(attributeName) == null){
- map.put(attributeName, attrs.get(attributeName));
- }else{
- map.put(attributeName, attrs.get(attributeName).get());
- }
- }
- System.out.println(map);
- list.add(map);
- } else {
- System.out.println(obj);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- System.out.println("总符合条件记录数:"+list.size());
- return list;
- }
- public static void main(String arg[]) {
- LDAPConnection.getInstance().getUsers();
- }
- }
- 浏览: 63882 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (79)
- 技术研究类 (61)
- 心灵鸡汤 (3)
- Struts (1)
- Spring (17)
- Hibernate (0)
- Java (47)
- Mybatis (5)
- Tomcat (4)
- Javascript (4)
- Oracle (3)
- JSP (1)
- HSQLDB (0)
- WebService (2)
- Javascript引擎 (2)
- Dubbo (3)
- Java mail (1)
- Ant (1)
- ASM技术分析 (2)
- AspectJ (0)
- 系统优化 (4)
- Redis (7)
- 二维码 (2)
- JSF (1)
- Zookeeper (3)
- jdbc (2)
- jndi (3)
- 数据跑批框架 (1)
- memcache (3)
- AD域的操作 (1)
- 优化方案 (1)
- apache (1)
- 设计模式 (0)
- J2EE (0)
最新评论
发表评论
-
Java之23种设计模式之概要介绍-01
2016-09-06 18:22 0一.设计模式概要介绍: 总体而言Java方向的设 ... -
编程方式 获取ApplicationContext实例
2016-05-16 10:46 742基于Spring的Java应用会通过Ap ... -
获取spring的ApplicationContext几种方式
2016-05-16 10:42 1199Java类获取spring 容器的bean 常用的5 ... -
apache-commons-stringutil的常用使用方法
2016-05-15 18:03 1038public static void TestStr(){ ... -
Java代码优化方案
2016-05-15 18:02 5161. 尽量在合适的场合使用单例 使用单例可以 ... -
Struts2中的ModelDriven机制及其运用
2016-05-15 17:38 793ModelDriven 所谓ModelDriven,意思是 ... -
spring调用memcached client for java
2016-05-06 15:45 600转载:spring调用memcached client ... -
memcached客户端源码分析
2016-05-06 15:42 774转载:memcached客户端源码分析 ... -
跑批利器--批处理应用程序
2016-05-04 14:23 1059跑批利器--批处理应用程序 ... -
深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
2016-05-04 14:16 546深入浅出Mybatis系列(四)---配置详解之typeAl ... -
深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)
2016-05-04 14:06 508深入浅出Mybatis系列(三)---配置详解之proper ... -
深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
2016-05-04 14:04 471深入浅出Mybatis系列(二)---配置简介(mybati ... -
深入浅出Mybatis系列(一)---Mybatis入门
2016-05-04 14:02 475深入浅出Mybatis系列(一)---Mybatis入 ... -
Oracle的分页方法
2016-05-01 00:51 3931.根据ROWID来分<!--more--> ... -
Spring的jar包详解
2016-05-01 00:36 697转载:Spring——jar包详解 or ... -
Spring 配置JNDI(连接池)
2016-04-29 15:38 6501. 找到Tomcat6.0安装目录下 ... -
Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析
2016-04-29 15:16 3075在使用 Tomcat服务器 + Sprin ... -
Spring对JNDI的支持方法
2016-04-29 15:14 1006Spring对JNDI的支持 Spring中 ... -
spring3 jdbctemplate 注解实例
2016-04-29 14:56 1822标签: javawebTimestampspring第 ... -
Spring中的jdbcTemplate使用方法
2016-04-29 13:38 9816Spring中jdbcTemplate的用法实例(一) ...
相关推荐
打包命令为:mvn clean package Jar包运行命令为:java -jar C:\Users\z00459km\Desktop\demo-0.0.1-SNAPSHOT.jar 亲测AD域认证通过,内容包含两种认证信息写法。
java使用ldap修改ad域用户密码收集.pdf
private final String URL = "ldap://ip:端口";//地址,根据对方文档进行修改 ... //要搜索的上下文或对象的名称,根据对方文档进行修改 ...//工厂类,根据对方文档进行修改 ...//管理员,根据对方文档进行修改 ...
(3)简化异步事件的处理:服务器应用程序在接受来自多个远程客户端的请求时,如果为每个连接都分配一个线程并且使用同步IO,就会降低开发难度 (4)用户界面具备更短的响应时间:现代GUI框架中大都使用一个...
本书适合Java程序开发人员阅读 目录 · · · · · · 对本书的赞誉 译者序 前 言 第1章 简介1 1.1 并发简史1 1.2 线程的优势2 1.2.1 发挥多处理器的强大能力2 1.2.2 建模的简单性3 1.2.3 异步事件的简化...
Windows验证很简单用于简单应用它根据当前域Active Directory(AD)来验证用户身份用户组被当作角色来进 行基于角色验证用户组角色可能不像应用需要那么细化所以它们必须存在另个数据库或自己AD中 ;Windows验证不能...
EneQuesleToolsquesle-tool-captcha是一个验证码生成和验证的工具,...quesle-tool-editor是对UEditor的Java开发,在开发的过程中,需要对UEditor进行部分的修改,详细请看quesle-tool-editor目录下的README.md的内容;
以下这些情况都可以引发异常:您的代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等<BR><BR>《Exception Handling for C++》关于异常处理论文,向...
AD790179-8D8A-4CC6-BF68-25D58C7FD745.js adb5037常用命令.js aes加解密000.js AES加解密demo.js after work.js AJ-网易云签到.js AJ_api_search(1).js AJ_api_search.js aj内置文件管理.js AJ功能搜索(1...
这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ...
13.什么是变量的作用域 14.如何强制要求显式声明变量 15.如何保留或消除过程调用对变量的影响 16.如何创建和调整动态数组 18.如何计算中英文混合字符串的长度 19.如何判断字符串是否以指定字符串开头或结尾 20.如何...
一、IIS的添加 请进入“控制面板”,依次选“添加/删除程序→添加/删除Windows组件”,将“Internet信息服务(IIS)”前的小钩去掉(如有),重新勾选中后按提示操作即可完成IIS组件的添加。用这种方法添加的IIS...