在企业级大数据平台应用中,经常会面临企业内部组织结构与用户数据的存储及应用场景。LDAP(Light-weight
Directory Access
Protocol)就是常用的存储载体,LDAP是轻量级目录访问协议的简称,是一种树形目录结构的轻量级数据库。它能够提供快速而高效的查询效率,且易于使用。Spring对于LDAP服务的操作有着良好的支持。本文重点阐述如何在Spring
Boot构建的RESTful服务中集成LDAP功能,并将集成过程中的经验和遇到的问题进行分享。
第一步,新建RESTful服务,不再赘述。如下图所示:
第二步,新建的RESTful服务,是不支持安全验证功能的,为此服务增加安全验证机制,首先需要在DOM文件中添加四个依赖项:spring-boot-starter-security、spring-ldap-core、spring-security-ldap、unboundid-ldapsdk。通过依赖项的添加,接下来,我们才可以配置安全认证策略,以及实现一个简单的供开发调试使用的LDAP服务。如下图所示:
第三步,安全认证策略配置是利用Java文件和@Configuration注解实现的。新建一个WebSecurityConfig类,继承WebSecurityConfigurerAdapter,覆盖configure方法。如下图所示:
值得注意:userDnPatterns("uid={0},ou=people")中{0}来自网页表单输入;url("ldap://localhost:8389/dc=springframework,dc=org")说明还需要一个LDAP服务支撑,这个地方困扰了一下,这个服务如何搭建?其实官网中已经给出了方法,下面过程遇到了这个问题。
第四步,构建一个LDIF (LDAP Data Interchange Format)用于存储用户数据,以提供LDAP服务交换数据使用。在resources目录下,新建一个test-server.ldif文件。具体内容如下图所示:
第五步,至此,运行程序,在浏览器中访问localhost:8080/login,按照官网提示输入用户名ben,密码benspassword。如下图所示:
却一直提示以下错误信息:
第六步,以上提示错误是发现缺少了一个LDAP服务拒绝访问,在properties文件中加入配置选项(这个地方迟疑了好久,后来发现在配置文件中缺少配置)。如下图所示:
第七步,再次运行程序,输出以下正常结果:
结束语:综合以上步骤,一个简单的Spring Boot集成LDAP搭建具备安全认证机制的RESTful服务功能开发完成,复杂的功能开发还需要我们进一步的不断探索。