浅谈Spring Security LDAP简介
作者:程序猿Knight 时间:2022-09-19 20:30:06
1.概述
在本快速教程中,我们将学习如何设置Spring Security LDAP。
在我们开始之前,了解一下LDAP是什么? - 它代表轻量级目录访问协议。它是一种开放的,与供应商无关的协议,用于通过网络访问目录服务。
2. Maven Dependency
首先,让我们看看我们需要的maven依赖项:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-server-jndi</artifactId>
<version>1.5.5</version>
</dependency>
注意:我们使用ApacheDS作为LDAP服务器,它是一个可扩展和可嵌入的目录服务器。
3. Java Configuration
接下来,我们来讨论我们的Spring Security Java配置:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase("ou=people")
.userSearchFilter("(uid={0})")
.groupSearchBase("ou=groups")
.groupSearchFilter("member={0}")
.contextSource()
.root("dc=baeldung,dc=com")
.ldif("classpath:users.ldif");
}
}
这当然只是配置的LDAP相关部分 - 可以在此处找到完整的Java配置。
4. XML Configuration
现在,我们来看看相应的XML配置:
<authentication-manager>
<ldap-authentication-provider
user-search-base="ou=people"
user-search-filter="(uid={0})"
group-search-base="ou=groups"
group-search-filter="(member={0})">
</ldap-authentication-provider>
</authentication-manager>
<ldap-server root="dc=baeldung,dc=com" ldif="users.ldif"/>
同样,这只是配置的一部分 - 与LDAP相关的部分;完整的XML配置可以在这里找到。
5. LDAP数据交换格式
LDAP数据可以使用LDAP数据交换格式(LDIF)表示 - 这是我们的用户数据的示例:
dn: ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
dn: uid=baeldung,ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jim Beam
sn: Beam
uid: baeldung
userPassword: password
dn: cn=admin,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupOfNames
cn: admin
member: uid=baeldung,ou=people,dc=baeldung,dc=com
dn: cn=user,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupOfNames
cn: user
member: uid=baeldung,ou=people,dc=baeldung,dc=com
6. The Application
最后,这是我们的简单应用:
@Controller
public class MyController {
@RequestMapping("/secure")
public String secure(Map<String, Object> model, Principal principal) {
model.put("title", "SECURE AREA");
model.put("message", "Only Authorized Users Can See This Page");
return "home";
}
}
7.总结
在这本使用LDAP的Spring Security快速指南中,我们学习了如何使用LDIF配置基本系统并在spring security配置LDAP。
可以在github项目中找到本教程的完整实现 - 这是一个基于Eclipse的项目,因此它应该很容易导入和运行。
来源:http://www.cnblogs.com/xjknight/p/10905208.html
标签:Spring,Security,LDAP
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java中如何动态创建接口的实现方法
2023-11-25 15:13:02
![](https://img.aspxhome.com/file/2023/9/60259_0s.png)
Java中synchronized正确使用方法解析
2021-12-20 13:00:39
![](https://img.aspxhome.com/file/2023/5/61865_0s.png)
Java Annotation(Java 注解)的实现代码
2023-01-09 00:36:17
![](https://img.aspxhome.com/file/2023/2/61532_0s.png)
spring中bean id相同引发故障的分析与解决
2023-08-05 11:30:41
![](https://img.aspxhome.com/file/2023/2/61872_0s.jpg)
Java基于zxing生成二维码矩阵过程解析
2023-11-23 06:04:06
![](https://img.aspxhome.com/file/2023/5/59845_0s.png)
java如何通过IP解析地理位置
2021-09-11 08:01:07
![](https://img.aspxhome.com/file/2023/5/61535_0s.png)
Java如何实现登录token令牌
2022-05-19 16:58:11
![](https://img.aspxhome.com/file/2023/4/59934_0s.jpg)
Thymeleaf 3.0 自定义标签方言属性的实例讲解
2023-03-24 20:40:23
Android基于TextView实现跑马灯效果
2023-07-25 06:32:45
Java中的接口回调实例
2023-11-29 08:05:43
El表达式使用问题javax.el.ELException:Failed to parse the expression的解决方式
2023-11-24 12:47:13
![](https://img.aspxhome.com/file/2023/8/59528_0s.png)
@valid 无法触发BindingResult的解决
2023-08-10 09:16:12
Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动
2023-09-21 00:16:18
![](https://img.aspxhome.com/file/2023/7/58577_0s.png)
java读取XML文件的四种方法总结(必看篇)
2023-03-22 23:12:58
Java ArrayList实现删除指定位置的元素
2023-11-25 05:34:13
![](https://img.aspxhome.com/file/2023/0/60160_0s.png)
tomcat部署java web项目遇到的问题及解决方法
2023-08-04 23:44:27
![](https://img.aspxhome.com/file/2023/2/58032_0s.jpg)
jdbc+jsp实现简单员工管理系统
2021-08-31 23:08:15
Java上传视频实例代码
2023-06-24 04:17:45
Springboot公共字段填充及ThreadLocal模块改进方案
2023-11-17 22:58:39
![](https://img.aspxhome.com/file/2023/4/59184_0s.png)
Java接口默认方法带来的问题分析【二义性问题】
2023-11-27 20:32:55
![](https://img.aspxhome.com/file/2023/7/60117_0s.png)