Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶!
1 前言
Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库中;但在许多企业,是使用AD来管理账户信息,本文将讲解如何整合Data Flow和LDAP。
Spring Cloud Data Flow相关文章:
Spring Cloud Data Flow初体验,以Local模式运行
把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试
Spring Cloud Data Flow用Shell来操作,方便建立CICD
被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题
Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制
Spring Cloud Data Flow整合UAA使用外置数据库和API接口
2 启动LDAP服务器
2.1 启动服务器
我们使用Apache的开源框架来作为Ldap服务器,引入依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-protocol-ldap</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
</dependencies>
Springboot的启动类如下:
@SpringBootApplication
public class LdapServer {
public static void main(String[] args) throws Throwable {
SpringApplication.run(LdapServer.class, args);
}
@Bean
public ApacheDSContainer apacheDSContainer() throws Exception {
final File temporaryFolder = Files.createTempDirectory("ldap_server").toFile();
final String ldapFileName = "testUsers.ldif";
ApacheDSContainer apacheDSContainer = new ApacheDSContainer("dc=springframework,dc=org",
"classpath:" + ldapFileName);
apacheDSContainer.setPort(40000);
final File workingDir = new File(temporaryFolder, UUID.randomUUID().toString());
apacheDSContainer.setWorkingDirectory(workingDir);
return apacheDSContainer;
}
}
启动端口为40000,用户配置信息ldif文件为testUsers.ldif,我们把测试使用到的AD账户和群组信息都配置在这个文件里。dc=springframework,dc=org是AD的根目录,所有配置信息树的起点。
testUsers.ldif比较大,请参考:https://github.com/LarryDpk/pkslow-samples/blob/master/spring-cloud/ldap-server/src/main/resources/testUsers.ldif 。
2.2 连接服务器
启动了Ldap服务器后,我们可以通过Apache Directory Studio客户端工具来进行查看和管理。如下图所示:

3 UAA配置
UAA服务器需要配置相关信息以连接Ldap服务,配置在uaa.yml文件中,具体添加的配置如下:
spring_profiles: default,postgresql,ldap
ldap:
profile:
file: ldap/ldap-search-and-bind.xml
base:
url: 'ldap://localhost:40000/'
userDn: 'uid=leah,ou=people,dc=springframework,dc=org'
password: 'leahberlin'
searchBase: 'ou=otherpeople,dc=springframework,dc=org'
searchFilter: 'uid={0}'
referral: follow
groups:
file: 'ldap/ldap-groups-map-to-scopes.xml'
searchBase: 'ou=groups,dc=springframework,dc=org'
searchSubtree: true
groupSearchFilter: member={0}
maxSearchDepth: 10
autoAdd: true
profiles需要添加ldap来打开这个功能。
添加配置后,重启UAA服务器即可生效。但我们现在可以通过用户的登陆信息获取他的AD群组,但这个群组与UAA的群组是不一样的,需要为它们建立一个映射关系。即:
AD group --> UAA group --> Data Flow Role。
这个映射关系的后半部分之前讲解了,前半部分通过uaac或Rest API可以配置,如下:
uaac group map "cn=view,ou=groups,dc=springframework,dc=org" --name="dataflow.view" --origin=ldap
uaac group map "cn=create,ou=groups,dc=springframework,dc=org" --name="dataflow.create" --origin=ldap
uaac group map "cn=manage,ou=groups,dc=springframework,dc=org" --name="dataflow.manage" --origin=ldap
4 登陆测试
我们直接用ldif文件配置的用户marlene/supersecret登陆如下:

实际上,我们依旧可以使用保存在数据库中账号(如larry/larry)登陆,它们是可以并存的,提供了很大的便利性。
5 总结
本文讲解了Data Flow与LDAP的整合,至此,在Spring Cloud Data Flow的鉴权方面,已经讲述比较完整了。
代码请查看:https://github.com/LarryDpk/pkslow-samples
参考文档:
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。
Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理的更多相关文章
- Spring Cloud Data Flow整合UAA使用外置数据库和API接口
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 之前的文章<Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制 ...
- Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于Spring Cloud Data Flow这里不多介绍,有兴趣可以看下面的文章.本文主要介绍如何整合Dat ...
- Spring Cloud Data Flow 中的 ETL
Spring Cloud Data Flow 中的 ETL 影宸风洛 程序猿DD 今天 来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据 ...
- 【SFA官方译文】:Spring Cloud Data Flow中的ETL
原创: 影宸风洛 SpringForAll社区 昨天 原文链接:https://www.baeldung.com/spring-cloud-data-flow-etl 作者:Norberto Ritz ...
- Spring Cloud Data Flow初体验,以Local模式运行
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用.不仅 ...
- 把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow在本地跑得好好的,为什么要部署在Kubernetes上呢?主要是因为Kubern ...
- Spring Cloud Data Flow用Shell来操作,方便建立CICD
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 之前我们用两篇文章讲解了Spring Cloud Data Flow,例子都是用UI操作的,但我们在Linux系统上经常是无 ...
- Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现
作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发...Spring Cloud ...
- Spring Cloud和Dubbo整合开发笔记(1)
一.需求背景: 公司内部老项目微服务技术栈使用Dubbo, 新项目技术栈使用主流的Spring Cloud相关组件开发,新旧项目涉及交互调用,无法直接通信数据传递. 老项目基于Dubbo,重构代码升级 ...
随机推荐
- .Net Core平台下,添加包的引用
一个程序的开发过程中离不开对程序集(Assembly,将程序集打包好,就成为一个.dll的包文件,它也叫动态链接库(Dynamic Link Library))的依赖,在以前ASP.Net时代,微软 ...
- FastDFS依赖无法导入
FastDFS依赖无法导入 fastdfs-client-java 导入爆红 <!-- FastDFS--> <dependency> <groupId>org.c ...
- 【Mysql】数据库索引,百万数据测试索引效果
Mysql官方对索引的定义是:索引(index)是帮助Mysql高效获取数据的数据结构.进而,我们可以知道索引的本质是数据结构. 一.索引的分类 主键索引:也就是我们常见的 PRIMARY KEY,只 ...
- [bug] maven“1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符”
原因 maven打包默认采用jdk 1.5,无法识别<> 解决 在pom.xml中加入: <properties> <maven.compiler.source>1 ...
- Linux_软件包管理基本概述
一.回去软件包的途径 1.系统发行版的光盘或官方的服务器镜像站 http://mirrors.aliyun.com //阿里云镜像站 http://mirrors.sohu.com ...
- 056.Python前端Django模型ORM多表基本操作
一 准备工作 1.1 新建一个项目 root@darren-virtual-machine:~# cd /root/PycharmProjects/ root@darren-virtual-machi ...
- C# 技术体系简介
C# 语言 .Net Framwork .NET Core winform界面编程 WPF开发经验,熟悉C/S架构产品开发及架构和设计 DevExpress界面框架(其实就是基于微软的 Winform ...
- linux 系统监控命令之 top-(转自 Howie的专栏)
top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 本文通过一个运行中的 ...
- 【转】Spring_IOC学习
原文地址:http://github.thinkingbar.com/spring/ 一.XML文件语法的知识点 对于XML没有提示的话,在Eclipse中搜索XML catalog设置.对于XML文 ...
- Stream中的Peek操作
1.引言 如果你试图对流操作中的流水线进行调试, 了解stream流水线每个操作之前和操作之后的中间值, 该如何去做? 首先我们看一个例子, 使用forEach将流操作的结果打印出来. 1 /** 2 ...