关于ldap这里不做介绍

一、Docker安装LDAP

1、安装openldap

docker run \-d \-p 389:389 \-p 636:636 \-v /usr/local/ldap:/usr/local/ldap \-v /data/openldap/ldap:/var/lib/ldap \-v /data/openldap/slapd.d:/etc/ldap/slapd.d \--env LDAP_ORGANISATION="imysh" \--env LDAP_DOMAIN="imysh.com" \--env LDAP_ADMIN_PASSWORD="123456" \--name openldap \--hostname openldap-host\--network bridge \osixia/openldap

2、安装可视化界面phpldapadmin

docker run \-p 8080:80 \--privileged \--name phpldapadmin \--env PHPLDAPADMIN_HTTPS=false \--env PHPLDAPADMIN_LDAP_HOSTS=192.168.0.109  \--detach osixia/phpldapadmin

docker查看容器状态:

3、访问管理首页

访问: 主机ip:8080

4、登录

点击login,输入用户名密码

注意用户名的格式:  cn=admin,dc=imysh,dc=com

也就是第一步中安装openladp的配置部分,默认cn就是admin

二、Springboot集成LDAP

1、集成

新建Springboot项目,这是依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-ldap</artifactId>
</dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope>
</dependency>

这是配置文件

server:port: 8089servlet:context-path: /
spring:application:name: zmy-ldap# ldap配置ldap:urls: ldap://192.168.0.109:389base: dc=imysh,dc=comusername: cn=admin,${spring.ldap.base}password: 123456

2、添加测试数据

通过管理页面可以看到目前还没有数据,需要手动添加一些数据,

添加数据可以通过管理页面的import按钮添加,name需要添加哪些数据呢?

添加两个组织

dn: ou=people,dc=imysh,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people

这里我添加了两个组织,一个ou=people,一个ou=yana

3、编写测试代码

①、Person类

package com.imysh.zmy.ldap.entity;import lombok.Data;
import org.springframework.ldap.odm.annotations.Attribute;
import org.springframework.ldap.odm.annotations.DnAttribute;
import org.springframework.ldap.odm.annotations.Entry;
import org.springframework.ldap.odm.annotations.Id;import javax.naming.Name;
import java.io.Serializable;/*** @author zhangmy* @date 2022/2/24 9:27* @description ldap用户** 注解@Entry中base指定了组织(ou=people),如果不指定base,则会在域下面直接生效;objectClasses表情是添加person*/
@Data
@Entry(base = "ou=people", objectClasses="inetOrgPerson")
public class Person implements Serializable {private static final long serialVersionUID = -337113594734127702L;/*** 此字段不能少*/@Idprivate Name id;@DnAttribute(value = "uid", index = 3)private String uid;@Attribute(name = "cn")private String commonName;@Attribute(name = "sn")private String suerName;private String userPassword;}

然后我们使用SpringbootTest进行测试,需要用到LdapTemplate

@Autowired
private LdapTemplate ldapTemplate;

②、添加用户到people组

/*** 添加person(注意Person类的定义)*/
@Test
public void addPerson() {Person person = new Person();person.setUid("uid:14");person.setSuerName("LISI");person.setCommonName("lisi");person.setUserPassword("123456");ldapTemplate.create(person);
}

页面上刷新即可看到

同样的方式给yanfa组也添加一个用户,记得修改Person类的@Entry注解

如果这里添加失败的话,使用maven clean install一下

然后看下添加的数据

③、数据查询

/*** filter方式查询*/
@Test
public void filterSearch() {// 获取域列表,如果要获取确定的某一个域,filter可以这样写: (&(objectclass=dcObject)&(dc=imysh))// String filter = "(&(objectclass=dcObject))";// 获取组织列表,如果要获取确定的某一个组织,filter可以这样写: (&(objectclass=organizationalUnit)&(ou=people)// String filter = "(&(objectclass=organizationalUnit))";// 获取people列表,如果要获取某一个确定的人,filter可以这样写: (&(objectclass=inetOrgPerson)&(uid=uid:13))String filter = "(&(objectclass=inetOrgPerson))";List<Person> list = ldapTemplate.search("", filter, new AttributesMapper() {@Overridepublic Object mapFromAttributes(Attributes attributes) throws NamingException {//如果不知道ldap中有哪些属性,可以使用下面这种方式打印NamingEnumeration<? extends Attribute> att = attributes.getAll();while (att.hasMore()) {Attribute a = att.next();System.out.println(a.getID() + "=" + a.get());}Person p = new Person();Attribute a = attributes.get("cn");if (a != null) p.setCommonName((String) a.get());a = attributes.get("uid");if (a != null) p.setUid((String) a.get());a = attributes.get("sn");if (a != null) p.setSuerName((String) a.get());a = attributes.get("userPassword");if (a != null) p.setUserPassword(a.get().toString());return p;}});list.stream().forEach(System.out::println);
}
/*** query方式查询*/
@Test
public void querySearch() {// 也可以使用filter查询方式,filter 为(&(objectClass=user)(!(objectClass=computer))List<Person> personList = ldapTemplate.search(query().where("objectClass").is("inetOrgPerson").and("uid").is("uid:13"),new AttributesMapper() {@Overridepublic Person mapFromAttributes(Attributes attributes) throws NamingException {//如果不知道ldap中有哪些属性,可以使用下面这种方式打印// NamingEnumeration<? extends Attribute> att = attr.getAll();//while (att.hasMore()) {//  Attribute a = att.next();// System.out.println(a.getID());//}Person p = new Person();Attribute a = attributes.get("cn");if (a != null) p.setCommonName((String) a.get());a = attributes.get("uid");if (a != null) p.setUid((String) a.get());a = attributes.get("sn");if (a != null) p.setSuerName((String) a.get());a = attributes.get("userPassword");if (a != null) p.setUserPassword(a.get().toString());return p;}});personList.stream().forEach(System.out::println);
}

两种查询方式都可以

基于这种查询的方式,之后就可以通过这种方式去LDAP服务器同步用户了,到此结束了就.

Docker安装LDAP并集成Springboot测试LDAP相关推荐

  1. neo4j图数据库安装(mac)+neo4j集成springboot实现基础的增删改查

    目录 第一部分 mac安装neo4j 第二部分 neo4j集成springboot实现基础的增删改查 一.图数据库相关配置 二.业务逻辑 实体类 持久层 业务层 表现层 启动类 三.测试 附录: 第一 ...

  2. docker安装mysql5.7(仅供测试使用)

    前言 环境:Centos7.9 mysql5.7 Docker version 20.10.9 mysql数据库建议使用物理机安装,这里使用docker安装mysql仅供测试使用或其他不重要场景使用. ...

  3. Docker安装Mysql 案例和Tomcat测试

    1.先pull一下mysql docker pull mysql docker run --name mysql001 -e MYSQL_ROOT_PASSWORD -d -p 3307:3306 m ...

  4. 组件分享之后端组件——基于Golang实现的基于LDAP V3协议的操作包ldap

    组件分享之后端组件--基于Golang实现的基于LDAP V3协议的操作包ldap 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续 ...

  5. docker安装部署LDAP

    docker安装部署OpenLdap 使用docker安装openldap前的工作准备 首先你的电脑端需要先安装docker 然后就是准备开始安装openldap 1.获取相关的镜像: docker ...

  6. OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用

    软件包安装 1. 说明 本文档采用rpm包方式安装,操作系统为centos 2 下载openoffice rpm包 创建源码包存放目录 mkdir /usr/local/src/openofficec ...

  7. gitlab 将管理员权限移交给ldap账户_CDPDC中Atlas集成FreeIPA的LDAP认证

    文档编写目的Cloudera从CM6.3版本开始,引入了Red Hat IdM来做整个集群的认证,Red Hat IdM对应的软件为FreeIPA,在本文中描述如何使用FreeIPA来做CDP-DC集 ...

  8. ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI

    什么是 ElasticSearch ? 数据库查询存在的问题: 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低 关键字模糊查询比较麻烦 ElasticSearch概念 • Elas ...

  9. LDAP第三天 MySQL+LDAP 安装

    https://www.easysoft.com/applications/openldap/back-sql-odbc.html      OpenLDAP 使用 SQLServer 和 Oracl ...

最新文章

  1. 拿到2021年灰飞烟灭的算法岗offer的大佬们,简历上都有什么?
  2. poj2586(贪心盈亏问题)
  3. springboot项目打包运行
  4. 服务器08系统伪静态,win2003/2008服务器IIS站点安装设置伪静态的方法
  5. 基于.NET实现数据挖掘--线性回归算法
  6. Coding Interview Guide -- 数组的partition调整
  7. java 免费cms_开源 免费 java CMS
  8. .net自带的IOC容器MEF使用
  9. yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
  10. 什么是广域网(WAN)?
  11. python中3个单引号,Pyhton3中单引号、双引号、三个引号的用法和区别
  12. FAT文件系统存储原理
  13. Fluent中udf编译问题
  14. 关于iis中域名转向的问题
  15. 开始混CSDN了,大器晚成……
  16. 微信活码系统/微信群二维码/活码生成系统/生成微信活码
  17. linux微信原生版2.1.5,优麒麟版重新打包,适用于debian内核系统
  18. java毕业设计旅游分享系统源码+lw文档+mybatis+系统+mysql数据库+调试
  19. Caused by: java.io.IOException: APR error: -730053
  20. LabVIEW与MATLAB联合编程之使用dll库文件连接

热门文章

  1. 关于疑问 - 求解答
  2. 用java写一个简易的点餐系统
  3. 通信仿真软件SystemView安装全流程详细解释(下载,安装,闪退,读条无反应)
  4. 关于谷歌浏览器无法卸载或无法更新的解决办法
  5. Vue的基本实现原理
  6. 句对处理任务技术模型汇总
  7. C语言fseek函数了解
  8. 如何在Mac电脑中打开AirPodsPro耳机的通透模式?
  9. EBS R12.2.5 克隆
  10. web程序设计基础——学习通选择判断复习(3)