Docker安装LDAP并集成Springboot测试LDAP
关于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相关推荐
- neo4j图数据库安装(mac)+neo4j集成springboot实现基础的增删改查
目录 第一部分 mac安装neo4j 第二部分 neo4j集成springboot实现基础的增删改查 一.图数据库相关配置 二.业务逻辑 实体类 持久层 业务层 表现层 启动类 三.测试 附录: 第一 ...
- docker安装mysql5.7(仅供测试使用)
前言 环境:Centos7.9 mysql5.7 Docker version 20.10.9 mysql数据库建议使用物理机安装,这里使用docker安装mysql仅供测试使用或其他不重要场景使用. ...
- Docker安装Mysql 案例和Tomcat测试
1.先pull一下mysql docker pull mysql docker run --name mysql001 -e MYSQL_ROOT_PASSWORD -d -p 3307:3306 m ...
- 组件分享之后端组件——基于Golang实现的基于LDAP V3协议的操作包ldap
组件分享之后端组件--基于Golang实现的基于LDAP V3协议的操作包ldap 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续 ...
- docker安装部署LDAP
docker安装部署OpenLdap 使用docker安装openldap前的工作准备 首先你的电脑端需要先安装docker 然后就是准备开始安装openldap 1.获取相关的镜像: docker ...
- OpenOffice4: 软件包安装, Docker安装,集成SpringBoot应用
软件包安装 1. 说明 本文档采用rpm包方式安装,操作系统为centos 2 下载openoffice rpm包 创建源码包存放目录 mkdir /usr/local/src/openofficec ...
- gitlab 将管理员权限移交给ldap账户_CDPDC中Atlas集成FreeIPA的LDAP认证
文档编写目的Cloudera从CM6.3版本开始,引入了Red Hat IdM来做整个集群的认证,Red Hat IdM对应的软件为FreeIPA,在本文中描述如何使用FreeIPA来做CDP-DC集 ...
- ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI
什么是 ElasticSearch ? 数据库查询存在的问题: 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低 关键字模糊查询比较麻烦 ElasticSearch概念 • Elas ...
- LDAP第三天 MySQL+LDAP 安装
https://www.easysoft.com/applications/openldap/back-sql-odbc.html OpenLDAP 使用 SQLServer 和 Oracl ...
最新文章
- 拿到2021年灰飞烟灭的算法岗offer的大佬们,简历上都有什么?
- poj2586(贪心盈亏问题)
- springboot项目打包运行
- 服务器08系统伪静态,win2003/2008服务器IIS站点安装设置伪静态的方法
- 基于.NET实现数据挖掘--线性回归算法
- Coding Interview Guide -- 数组的partition调整
- java 免费cms_开源 免费 java CMS
- .net自带的IOC容器MEF使用
- yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
- 什么是广域网(WAN)?
- python中3个单引号,Pyhton3中单引号、双引号、三个引号的用法和区别
- FAT文件系统存储原理
- Fluent中udf编译问题
- 关于iis中域名转向的问题
- 开始混CSDN了,大器晚成……
- 微信活码系统/微信群二维码/活码生成系统/生成微信活码
- linux微信原生版2.1.5,优麒麟版重新打包,适用于debian内核系统
- java毕业设计旅游分享系统源码+lw文档+mybatis+系统+mysql数据库+调试
- Caused by: java.io.IOException: APR error: -730053
- LabVIEW与MATLAB联合编程之使用dll库文件连接