发布于2021-07-13 20:54 阅读(1055) 评论(0) 点赞(24) 收藏(1)
我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶!
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接口
我们使用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 。
启动了Ldap
服务器后,我们可以通过Apache Directory Studio客户端工具来进行查看和管理。如下图所示:
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
我们直接用ldif
文件配置的用户marlene/supersecret
登陆如下:
实际上,我们依旧可以使用保存在数据库中账号(如larry/larry
)登陆,它们是可以并存的,提供了很大的便利性。
本文讲解了Data Flow
与LDAP
的整合,至此,在Spring Cloud Data Flow
的鉴权方面,已经讲述比较完整了。
代码请查看:https://github.com/LarryDpk/pkslow-samples
参考文档:
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...
多读书,多分享;多写作,多整理。
原文链接:https://www.cnblogs.com/larrydpk/p/14926240.html
作者:java战神
链接:http://www.javaheidong.com/blog/article/246203/a0de03123802b9c0b02a/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!