前言:
目前朋友们对“apachestudio”大概比较注意,咱们都需要分析一些“apachestudio”的相关知识。那么小编同时在网络上网罗了一些对于“apachestudio””的相关知识,希望朋友们能喜欢,兄弟们快快来了解一下吧!前言
Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库中;但在许多企业,是使用AD来管理账户信息,本文将讲解如何整合Data Flow和LDAP。
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的启动类如下:
@SpringBootApplicationpublic 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比较大,请参考: 。
2.2 连接服务器
启动了Ldap服务器后,我们可以通过Apache Directory Studio客户端工具来进行查看和管理。如下图所示:
3 UAA配置
UAA服务器需要配置相关信息以连接Ldap服务,配置在uaa.yml文件中,具体添加的配置如下:
spring_profiles: default,postgresql,ldapldap: 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=ldapuaac group map "cn=create,ou=groups,dc=springframework,dc=org" --name="dataflow.create" --origin=ldapuaac group map "cn=manage,ou=groups,dc=springframework,dc=org" --name="dataflow.manage" --origin=ldap4 登陆测试
我们直接用ldif文件配置的用户marlene/supersecret登陆如下:
实际上,我们依旧可以使用保存在数据库中账号(如larry/larry)登陆,它们是可以并存的,提供了很大的便利性。
5 总结
本文讲解了Data Flow与LDAP的整合,至此,在Spring Cloud Data Flow的鉴权方面,已经讲述比较完整了。
代码请查看:
标签: #apachestudio