1 前言
关于Spring Cloud Data Flow
这里不多介绍,有兴趣可以看下面的文章。本文主要介绍如何整合Data Flow
和CloudFoundry UAA
来做权限控制,而不是任何人都可以直接访问操作。
Spring Cloud Data Flow
相关文章:
Spring Cloud Data Flow初体验,以Local模式运行
把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试
Spring Cloud Data Flow用Shell来操作,方便建立CICD
被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题
UAA,即CloudFoundry User Account and Authentication
,一个身份认证和授权服务系统,主要用于CloudFoundry
,也可以作为一个独立的OAuth2
服务器,给客户端分发令牌。可以在单点登陆SSO
等场景使用到它。
UAA
还可以整合LDAP
,但为了简化,本文只演示如何最简单的整合。
2 启动UAA服务
官方提供了war
包形式的uaa.war
,可以直接下载然后部署在Servlet
容器上,如Tomcat
等。UAA Bundled
通过Springboot
把war
包包装起来,让启动应用像应用springboot
一样简单。本文通过这种形式来启动。
通过插件maven-dependency-plugin
来下载war
包,如下:
通过一个Springboot
的主函数入口来调用:
配置文件和war
包的文件名硬编码了,实际项目可以通过配置来实现。
接着要配置uaa.yml
文件,具体内容查看代码https://github.com/LarryDpk/pkslow-samples ,这里不贴出来了。注意需要生成JWT
的key:
完成以上步骤后,可以打包启动了,命令如下:
默认端口为8080
。成功启动后,可以访问:http://localhost:8080/uaa/login
3 配置账号
为了方便,我们使用内存数据库来保存账户信息,重启后就会丢失。通过uaa
提供的命令行工具uaac
来创建用户与权限。因为uaac
是基于Ruby
的,所以还要先安装Ruby
,我的电脑已经自带,这里就不演示了。
为了更快安装命令行工具cf-uaac
,修改Ruby
包管理工具gem
的源:
配置了国内源后,安装:
安装完成后,就可以通过下面的命令来创建用户了。
这里关键的是用户和群组,即user
和group
。这里配置的信息,会与Data Flow Server
的配置对应上才可以。
4 配置与启动Data Flow Server
Data Flow Server
的配置文件非常重要,它是整合UAA
的关键。关键是两部分,第一部分是配置UAA
各种信息,如clientId
,Token
的地址,各种鉴权地址等;第二部分是角色映射,Data Flow
是基于角色的权限控制,它自己的角色要和UAA
的群组映射起来才可以正常使用。
配置如下:
可以看出,多个不同角色可以映射同一个群组,非常灵活。
配置完成后,就可以启动Data Flow Server
了:
5 体验成果的时候到了
成功启动UAA
并配置用户,再启动Data Flow Server
后,便可以开始使用了,过程如下:
访问http://localhost:9393/dashboard/#/apps 会自动跳转到登陆界面,点击uaa
:
跳转到uaa
的登陆界面:
输入配置的账号密码:larry/larry
,上面显示为Email
,其实并不是。登陆后就要确认授权:
授权后,会自动跳转回Data Flow
的界面,并已经有权限进行查看操作了:
登出后,又要要求重新登陆。至此,我们已经成功地整合了。
而shell
的使用如下:
总结
本文通过一步步演示如何整合Data Flow Server
和UAA
,以实现Data Flow
安全要求。实际UAA
应该使用其它数据库,如MySQL
,或整合LDAP
,这样重启账号数据不会丢失。后续有空再讨论吧。
代码请查看:https://github.com/LarryDpk/pkslow-samples
参考文档: