LDAP的介绍以及JAVA使用LdapTemplate来进行AD域的操作

一、概念介绍

1.1 LDAP

LDAP(轻型目录访问协议)是一种用于访问和维护分布式目录服务的开放标准协议。LDAP最初是从X.500标准中派生出来的,但相比于X.500,LDAP更加简化和灵活。LDAP协议定义了客户端和服务器之间进行通信的规范,提供了一种在网络上访问和管理分布式目录数据的方式。
LDAP主要有以下几个概念

  1. 目录服务:目录服务是一种存储和组织数据的系统,类似于数据库,但它更适合于存储和检索大量的层次结构数据。目录服务通常用于存储组织结构信息、用户身份验证和授权等数据。
  2. 目录项:目录项是LDAP中存储的基本单位,每个目录项具有一个唯一的标识符(通常是一个全局唯一的Distinguished Name),并包含一组属性-值对。
  3. Distinguished Name(DN):Distinguished Name是一个目录项的完整路径标识符,由多个RDN(Relative Distinguished Name)组成,每个RDN由属性-值对构成。DN用于在目录中唯一标识一个目录项。
  4. 属性:LDAP目录项可以包含多个属性,每个属性由属性名和对应的值构成。属性名通常是标准化的OID(Object Identifier),比如"cn"表示通用名称、"sn"表示姓氏。
  5. 基准线(Base DN):基准线是LDAP服务器上搜索和操作目录项的起始位置,它指定了在哪个部分的目录层次结构下进行操作。
  6. 绑定(Binding):绑定是指客户端与LDAP服务器建立连接并验证身份的过程,以便进行后续操作。客户端需要提供有效的用户名和密码来进行绑定。
  7. 过滤器(Filter):过滤器用于对目录中的条目进行筛选和搜索,以满足特定的查询条件。常见的过滤器操作符包括等于、大于、小于、与、或、非等。

LDAP在企业环境中广泛应用,特别用于管理用户、组织结构和资源访问控制等信息。通过LDAP,可以实现统一的身份认证和授权管理,提供了集中化的目录服务,方便用户和应用程序访问和检索目录数据。

1.2 AD

1.2.1 AD定义

AD是Active Directory的缩写,AD是LDAP的一个应用实例,而不应该是LDAP本身。比如:windows域控的用户、权限管理应该是微软公司使用LDAP存储了一些数据来解决域控这个具体问题,只是AD顺便还提供了用户接口,也可以利用ActiveDirectory当做LDAP服务器存放一些自己的东西而已。比如LDAP是关系型数据库,微软自己在库中建立了几个表,每个表都定义好了字段。显然这些表和字段都是根据微软自己的需求定制的,而不是LDAP协议的规定。然后微软将LDAP做了一些封装接口,用户可以利用这些接口写程序操作LDAP,使得ActiveDirectory也成了一个LDAP服务器。

1.2.2 特点

  1. 组织架构管理:AD以层次结构的方式组织和管理目录数据。AD中的顶层单位是域(Domain),每个域都可以包含多个组织单位(OU)。这种层次结构可以方便地对资源和用户进行组织、分类和授权。
  2. 用户身份验证和授权:AD用于存储和验证用户的身份信息,并提供了灵活的权限控制机制。通过AD,可以实现对用户访问资源的授权、密码策略的管理以及单点登录等功能。
  3. 安全性和访问控制:AD提供了细粒度的访问控制功能,可以根据用户、组、组织单位等进行权限控制。管理员可以定义不同的安全策略和访问权限,以保护敏感数据和资源。
  4. 集中化管理:AD提供了集中化管理工具,如Active Directory Users and Computers(ADUC),使管理员可以方便地管理用户、组、计算机、策略等。通过这些工具,管理员可以轻松地创建、修改和删除目录对象。
  5. 多域和信任关系:AD支持多域环境,不同的域可以建立信任关系,实现域之间的资源共享和访问。这样,用户可以从一个域访问其他域中的资源,实现跨域认证和授权。
  6. 扩展性和复制:AD具有高度的可扩展性,可以根据需要添加或删除域控制器来适应组织的发展和变化。AD使用复制机制来保持域控制器之间的数据一致性,确保在整个网络中的目录数据是同步的。

总而言之,AD是一种强大的目录服务,广泛用于企业网络环境中,提供统一身份认证、访问控制和资源管理功能,并通过LDAP协议与客户端进行交互。它简化了用户和资源管理的过程,提供了高级的安全性和可扩展性,是企业网络的核心基础设施之一。

1.2.3 应用

  1. 用户服务:管理用户的域账号、用户信息、企业通信录(与电子邮箱系统集成)、用户组管理、用户身份认证、用户授权管理、按需实施组管理策略等。这里不单单指某些线上的应用更多的是指真实的计算机,服务器等
  2. 计算机管理:管理服务器及客户端计算机账户、所有服务器及客户端计算机加入域管理并按需实施组策略。
  3. 资源管理:管理打印机、文件共享服务、网络资源等实施组策略。
  4. 应用系统的支持:对于电子邮件(Exchange)、在线及时通讯(Lync)、企业信息管理(SharePoint)、微软CRM,ERP等业务系统提供数据认证(身份认证、数据集成、组织规则等)。这里不单是微软产品的集成,其它的业务系统根据公用接口的方式一样可以嵌入进来。
  5. 客户端桌面管理:系统管理员可以集中的配置各种桌面配置策略,如:用户适用域中资源权限限制、界面功能的限制、应用程序执行特征的限制、网络连接限制、安全配置限制等。

二、使用

2.1 引入maven依赖

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-ldap</artifactId></dependency>

2.2 连接LDAP配置创建LdapTemplate

配置项里面的ldapUrl到password四项配置值可以放在配置文件里面,我写demo代码偷懒一下就先不放进配置文件了

@Configuration
public class LadpConfig {//${xxx}代表是变量以你自己实际的为准String ldapUrl = "${xxx}";String base = "ou=${xxx},${xxx},dc=global";String userName = "CN=${xxx},OU=03_Services,OU=CN,OU=${xxx},DC=${xxx},DC=Global";String passWord ="${xxx}";@Beanpublic LdapContextSource ldapContextSource(){LdapContextSource source = new LdapContextSource();source.setBase(base);source.setUrl(ldapUrl);source.setPassword(passWord);source.setUserDn(userName);return source;}@Beanpublic LdapTemplate ldapTemplate(){return new LdapTemplate(ldapContextSource());}}

2.3 使用LdapTemplate操作AD域

2.3.1 使用之前可以先看下LdapTemplate常使用的api的介绍

  1. search(): 用于执行LDAP搜索操作并返回结果。可以指定搜索的基准DN(Base DN)、过滤器(Filter)、搜索范围(Scope)和要返回的属性列表等
  2. lookup(): 用于执行LDAP查找操作,根据给定的DN获取对应的目录项。它返回一个DirContextOperations对象,可通过该对象访问目录项的属性和值。
  3. bind(): 用于将数据绑定到目录项。可以使用该方法进行目录项的添加、修改和删除操作。可以通过DirContextAdapter对象传递目录项的属性和值
  4. authenticate(): 用于进行用户身份验证。可以指定用户名、密码和绑定DN,LDAPTemplate将检查提供的凭据是否有效。
  5. unbind(): 用于解绑(删除)目录项。可以通过指定要删除的DN来删除整个目录项
  6. rename(): 用于重命名目录项。可以指定要重命名的目录项的原始DN和新的RDN(相对标识符)。
  7. modifyAttributes(): 用于修改目录项的属性值。可以指定要修改的DN和要添加、修改或删除的属性-值对。
  8. executeReadOnly():用于执行只读操作。将具体的LdapOperations执行作为参数传递给此方法,可以在事务内执行操作。
  9. count():用于计算满足给定过滤器条件的目录项数量。
  10. find():用于执行LDAP搜索操作并返回结果。

2.3.2 下面简单演示下常用的用户账户名密码验证以及验证通过后的用户信息查询

  1. 账户名密码校验
@Overridepublic boolean ldapAuth(String username, String passWord) {EqualsFilter filter = new EqualsFilter("sAMAccountName",username);return ldapTemplate.authenticate("",filter.toString(),passWord);}
  1. 查询用户信息

//接收用户信息的实体类
@Data
@Entry(base = "dc=b,dc=com", objectClasses = "user")
public class Person {@Idprivate Name id;@Attribute(name = "cn")private String cn;@Attribute(name = "sn")private String sn;@Attribute(name="mail")private String mail;@Attribute(name="telephoneNumber")private String telephoneNumber;@Attribute(name="description")private String description;@Attribute(name="givenName")private String givenName;@Attribute(name="sAMAccountName")private String sAMAccountName;@Attribute(name="department")private String department;@Attribute(name ="mobile")private String mobile;@Attribute(name = "EmployeeID")private String workNo;@Attribute(name = "displayName")private String userName;
}//查询用户信息方法LdapQuery query = LdapQueryBuilder.query().where("sAMAccountName").is(accountName).and("objectclass").is("user");return ldapTemplate.findOne(query, Person.class);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/232610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebMvcConfigurer接口详解及使用方式(Spring-WebMvc)

简介 如下图所示WebMvcConfigurer是spring-webmvc jar包下的一个接口&#xff0c;spring-webmvc jar包又来源于spring-boot-starter-web&#xff0c;所以要使用WebMvcConfigurer要引入spring-boot-starter-web依赖。WebMvcConfigurer接口提供了常用的web应用拦截方法。通过实现…

Lazada物流禁运规则是什么?Lazada物流禁运商品有哪些?——站斧浏览器

Lazada物流禁运规则 Lazada平台对物流禁运商品的规则主要有以下几个方面&#xff1a; 1.卖家在上传商品时需要填写正确的商品信息&#xff0c;包括商品名称、描述、图片等。如果卖家填写不准确或者存在虚假信息&#xff0c;将会导致物流禁运商品的误判。 2.卖家需要遵守平台…

HQX System Performance Troubleshooting Overview

Ensure your gvm config contain below ftrace configs: #导出config配置 adb root adb shell proc/config.gz#确认下列ftrace config是否开启&#xff0c;如果没有开启在代码中进行配置 CONFIG_TASKS_TRACE_RCUy CONFIG_TRACEPOINTSy CONFIG_STACKTRACE_SUPPORTy CONFIG_TRAC…

H5网页流媒体播放器EasyPlayer播放H.265录像时,无法倍速回放是什么原因?

流媒体播放器EasyPlayer是我们流媒体组件系列中关注度较高的产品&#xff0c;经过多年的发展和迭代&#xff0c;目前已经有多个应用版本&#xff0c;包括RTSP版、RTMP版、Pro版&#xff0c;以及js版&#xff0c;其中js版本作为网页播放器&#xff0c;受到了用户的广泛使用。在功…

Python自适应调整Excel的列宽度

使用python调整列宽度的逻辑需要自己写&#xff0c;这里是参考参考文章中的内容&#xff0c;使用openpyxl打开文件后&#xff0c;将列宽度根据列的内容进行指定&#xff0c;使用max(列的内容宽度 2) * 1.2来指定列宽 示例程序 假设有一个测试.xlsx的文件&#xff0c;使用如下…

Mac M系列安装配置VSCode

一、终端输入 安装command line tools xcode-select --install 这里是已经下载了 如果没有下载点击安装&#xff0c;等待安装完成即可 检验是否安装成功&#xff0c;终端输入 clang 如图所示是代表之前的command line tools安装 是安装成功的&#xff08;Clang会不断更新…

spring boot版本升级遇到的一些问题

背景&#xff1a;由于项目需求&#xff0c;需要将nacos 1.4.6版本升级到2.x版本&#xff0c;由此引发的springboot、springcloud、springcloud Alibaba一系列版本变更。 旧版本分别为&#xff1a; Spring Boot 2.3.5.RELEASE Spring Cloud Hoxton.SR9 Spring Cloud Alibaba 2.2…

数据库性能测试报告总结模板

1计划概述 目的&#xff1a;找出系统潜在的性能缺陷 目标&#xff1a;从安全&#xff0c;可靠&#xff0c;稳定的角度出发&#xff0c;找出性能缺陷&#xff0c;并且找出系统最佳承受并发用户数&#xff0c;以及并发用户数下长时间运行的负载情况&#xff0c;如要并发100用户&a…

虚拟化之问答

Q: Type 1 与 Type 2 虚拟机监控程序有何区别&#xff1f; A: Type 2 虚拟机监控程序运行在主机操作系统之上&#xff0c;而 Type 1 虚拟机监控程序则没有主机操作系统。 Q: Secure 状态和 Non-secure 状态分别有多少个 IPA 空间&#xff1f; A: Secure 状态有两个 IPA 空间…

集合工具类Collections

概述 java.utils.Collections:是集合工具类 作用&#xff1a;Collections并不属于集合&#xff0c;是用来操作集合的工具类。 Collections常用的API Collections排序相关API 使用范围&#xff1a;只能对于List集合的排序。 排序方式1&#xff1a; 注意&#xff1a;本方式…

SecureCRT for Mac/win强大安全的终端SSH工具,SecureCRT助您网络连接无忧

在当今数字化时代&#xff0c;网络连接已成为生活和工作中不可或缺的一部分。而对于需要进行远程访问和管理的用户来说&#xff0c;一个稳定、安全的终端SSH工具是至关重要的。SecureCRT作为一款强大的终端SSH工具&#xff0c;为用户提供了安全、高效的远程连接解决方案。 首先…

Linux 文本处理

在处理大文本时&#xff0c;使用VI打开会非常慢&#xff0c;通常只需要查看其中的少量信息&#xff0c;比如查看前多少行、或者文件尾多少行。这种情况下可以使用head和tail命令&#xff0c;这种方式查看起来会非常快。 查看文件1.txt 前1000行&#xff1a; head -n 1000 1.t…

【兔子王赠书第13期】AI绘画实战:Midjourney从新手到高手

文章目录 写在前面AI绘画推荐图书一本书读懂AI绘画关键点内容简介作者简介 推荐理由粉丝福利写在后面 写在前面 如今AI技术已经进入了我们的日常学习生活中&#xff0c;如何用一本书轻松玩转AI绘画&#xff0c;领略无限艺术可能呢&#xff1f; AI绘画 AI绘画是指利用人工智能…

紫光FPGA学习之常见报错

紫光pango design suite报错&#xff1a; 一、4005: [D:/**/rtl/burstORsingle.v(line number: 47)] Logic for ddr_head_addr_rr does not match a standard flip-flop. 看来看去都没有发现这个定义没有问题呀&#xff0c;检查发现&#xff1a; 原来代码&#xff1a; always…

会议剪影 | 思腾合力受邀出席首届CCF数字医学学术年会

首届CCF数字医学学术年会&#xff08;CCF Digital Medicine Symposium&#xff0c;DMS&#xff09;于2023年12月15日-17日在苏州CCF业务总部召开。这次会议的成功召开&#xff0c;标志着数字医学领域进入了一个新的时代&#xff0c;计算机技术和人工智能在医学领域的应用和发展…

Wireshark高级网络安全分析

第一章&#xff1a;Wireshark基础及捕获技巧 1.1 Wireshark基础知识回顾 1.2 高级捕获技巧&#xff1a;过滤器和捕获选项 1.3 Wireshark与其他抓包工具的比较 第二章&#xff1a;网络协议分析 2.1 网络协议分析&#xff1a;TCP、UDP、ICMP等 2.2 高级协议分析&#xff1a;HTTP…

【Docker离线安装与注册服务】

Docker离线安装与注册服务 一、离线安装1. Docker2. Docker-compose3. docker卸载4. 注册docker服务 ​ 一、离线安装 1. Docker Docker 官网离线安装文档&#xff1a;Install Docker Engine from binaries 整理步骤如下&#xff1a; 1.去官网下载 docker 安装包&#xff0c;…

Appcelerator打包ipa有哪些优势

大家好&#xff0c;我是咕噜-凯撒&#xff0c;我们得先知道Appcelerator是啥&#xff0c;Appcelerator&#xff08;现在更名为Axway Titanium&#xff09;是一个跨平台的移动应用开发框架通过提供一种简化和加速移动应用开发的方式帮助你构建高质量的跨平台应用程序。那使用App…

复旦团队提出思维交流框架EoT,由CoT到EoT,可跨模型通信,表现更出色

大型语言模型&#xff08;LLM&#xff09;通过利用庞大的训练语料和强大的计算资源&#xff0c;在众多 NLP 任务中表现卓越。然而&#xff0c;在理解和进行推理方面&#xff0c;这些模型仍显得相对薄弱&#xff0c;仅依靠增加模型的大小无法解决这一问题。 然而&#xff0c;现…

如何使用 TailwindCSS 画一条0.5px的线条

背景 在移动端项目&#xff0c;一般为了让线条看起来更细、更锐利&#xff0c;此时使用0.5px的线条是非常合适的。那么如何使用TailwindCSS画一条0.5px的线条呢&#xff1f; 在实现这个需求的时候&#xff0c;首先去TailwindCSS官网查了一下border有没有对应的内置工具类&…