- 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();
- }
- }
- 浏览: 68540 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 876基于Spring的Java应用会通过Ap ... -
获取spring的ApplicationContext几种方式
2016-05-16 10:42 1336Java类获取spring 容器的bean 常用的5 ... -
apache-commons-stringutil的常用使用方法
2016-05-15 18:03 1202public static void TestStr(){ ... -
Java代码优化方案
2016-05-15 18:02 6431. 尽量在合适的场合使用单例 使用单例可以 ... -
Struts2中的ModelDriven机制及其运用
2016-05-15 17:38 932ModelDriven 所谓ModelDriven,意思是 ... -
spring调用memcached client for java
2016-05-06 15:45 734转载:spring调用memcached client ... -
memcached客户端源码分析
2016-05-06 15:42 941转载:memcached客户端源码分析 ... -
跑批利器--批处理应用程序
2016-05-04 14:23 1148跑批利器--批处理应用程序 ... -
深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
2016-05-04 14:16 640深入浅出Mybatis系列(四)---配置详解之typeAl ... -
深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)
2016-05-04 14:06 593深入浅出Mybatis系列(三)---配置详解之proper ... -
深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
2016-05-04 14:04 566深入浅出Mybatis系列(二)---配置简介(mybati ... -
深入浅出Mybatis系列(一)---Mybatis入门
2016-05-04 14:02 560深入浅出Mybatis系列(一)---Mybatis入 ... -
Oracle的分页方法
2016-05-01 00:51 4261.根据ROWID来分<!--more--> ... -
Spring的jar包详解
2016-05-01 00:36 746转载:Spring——jar包详解 or ... -
Spring 配置JNDI(连接池)
2016-04-29 15:38 6921. 找到Tomcat6.0安装目录下 ... -
Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析
2016-04-29 15:16 3148在使用 Tomcat服务器 + Sprin ... -
Spring对JNDI的支持方法
2016-04-29 15:14 1048Spring对JNDI的支持 Spring中 ... -
spring3 jdbctemplate 注解实例
2016-04-29 14:56 1869标签: javawebTimestampspring第 ... -
Spring中的jdbcTemplate使用方法
2016-04-29 13:38 9862Spring中jdbcTemplate的用法实例(一) ...
相关推荐
Java验证AD域用户登录是企业级应用中常见的一种身份验证方式,主要用于确保只有授权的用户才能访问特定的系统或服务。AD(Active Directory)域是由微软Windows Server操作系统提供的目录服务,用于集中管理用户账户...
在开发过程中,可以使用Apache Directory Studio这样的工具进行调试和验证,它提供了图形化的界面,方便查看和管理AD域对象。同时,理解AD域的架构和目录结构也是成功实现这些功能的关键。 总的来说,Java AD域插入...
本文将深入探讨如何使用Java进行AD域操作。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface)服务,它是Java标准API的一部分,允许开发者访问各种命名和目录服务,包括AD。通过JNDI,我们...
打包命令为:mvn clean package Jar包运行命令为:java -jar C:\Users\z00459km\Desktop\demo-0.0.1-SNAPSHOT.jar 亲测AD域认证通过,内容包含两种认证信息写法。
Java操控AD域源码主要涉及的是使用Java编程语言与Active Directory(AD)...通过这个源码,开发者可以学习如何在Java应用中集成AD域服务,这对于开发企业级应用,尤其是需要统一用户管理和权限控制的应用来说非常有用。
Java开发人员经常使用Java Naming and Directory Interface (JNDI)来与AD进行交互。在本文中,我们将深入探讨如何使用Java JNDI来修改AD域密码,并重点讲解如何实现免SSL验证的方式。 首先,让我们了解JNDI。JNDI是...
在IT领域,特别是企业网络管理中,Active ...在实际开发过程中,需要对AD域架构有深入理解,熟悉Java编程以及相关的身份验证机制。提供的资源,包括JAR包、DEMO和文档,都是为了简化这个过程,帮助开发者快速实现功能。
Java和SpringBoot是开发此类解决方案的常用工具,因为它们提供了强大的支持来集成 LDAP 与 AD 域服务。下面我们将深入探讨如何使用Java和SpringBoot实现基于LDAP的AD域账号验证。 首先,我们需要了解LDAP的基本结构...
CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要功能是提供单点登录(Single Sign-On,SSO)服务。在企业环境中,尤其是在已部署了Active Directory(AD)域服务的情况下,将CAS与AD...
1. **Active Directory (AD)**:一种由微软开发的目录服务,用于Windows Server操作系统,可以实现对用户账户、计算机、资源和服务的集中管理和控制。 2. **LDAP (Lightweight Directory Access Protocol)**:轻量级...
在IT领域,特别是企业网络...理解并能熟练运用这些Java LDAP操作是任何希望在企业级系统开发中涉及AD集成的开发者必须掌握的技能。在处理大规模的企业网络环境时,正确和安全地管理AD域用户权限和密码策略至关重要。
Java 使用 LDAP 修改 AD 域用户密码收集 Java 使用 LDAP 修改 AD 域用户密码收集是指通过 Java 语言使用 LDAP 协议修改 Active Directory 域用户的密码。下面是相关知识点的总结: 1、LDAP 无法获取 Window s ...
在Java开发中,"JAVA对接AD域集成"指的是将Java应用程序与Active Directory (AD) 域服务进行整合,以实现用户身份验证、权限管理等功能。以下是对代码片段中的关键知识点的详细解释: 1. **LDAP (轻量级目录访问...
在IT领域,特别是Java开发中,`JAVA JNDI免证书修改AD域密码`是一个重要的主题,涉及到企业级应用与Active Directory(AD)域服务的交互。Active Directory是微软提供的目录服务,用于集中管理网络资源,如用户账户...
总之,通过Spring Boot 2.x和LDAP的集成,我们可以构建出高效、安全的企业级应用,实现与AD域控制器的无缝对接,从而方便地管理和同步用户及组织信息。这对于大型企业来说,是提高IT效率、保证数据安全的关键步骤。
本项目提供了一种便捷的方式,允许开发者在Java环境中创建、管理和更新AD域中的用户信息,并且可以直接在Eclipse集成开发环境中进行测试。 首先,我们需要了解LDAP。LDAP是一种用于存储和检索分布式目录信息的标准...
- **UnboundID LDAP SDK**:一款强大的Java LDAP开发库,支持丰富的操作和调试功能。 - **PowerShell**:微软的命令行工具,通过模块如ActiveDirectory,可以方便地执行AD管理任务。 - **SharpAD**:C#编写的轻量...
在IT行业中,"AD 实用库自带封装...总的来说,AD实用库封装对于初次接触AD开发的人员来说,是一个很好的起点,能够帮助他们快速上手并实现各种功能。通过学习和熟练运用这些库,可以更高效地管理和维护企业网络环境。
3. AD域架构:了解如何设计和规划AD域结构,包括域、组织单元(OU)和林。 4. AD工具:学习使用Windows自带的AD管理工具,如Active Directory Users and Computers(ADUC)和命令行工具如Dsquery、Dsadd、Dsmod等。...