1.目录介绍:
(1)目录是一种为浏览和搜索数据而创建的树状数据库,包含基于属性的描述性信息,并且支持高级的过滤功能。
(2)目录不支持大多数事务性数据库所支持的高吞吐等复杂的更新操作;目录进行更新操作,可以说是要么全部,要么都不的原子操作,目录服务适合的业务应用在于提供大量的查询和搜索操作。
(3)为了保证目录数据的可用性和可靠性,在确保提供快速的查询和搜索操作的同时,还提供了主从服务器同步目录数据信息的能力,这相当于传统的Mysql数据库的主从同步一样,可以最大限度的确保基于目录业务的持续可用性。

2.LDAP介绍:
LDAP全称为Lightweight Directory Access Protocol(轻量级目录访问协议),有如下特点:跨平台的,标准的协议;树形结构,不用SQL语句维护;静态数据的快速查询方式,不适于写数据;LADP存储的数据可由是文本资料,二进制图片等;Client/Server模型:Server用于存储树,Client提供操作目录信息数的工具

3.引入应用所需的依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency><groupId>org.springframework.ldap</groupId><artifactId>spring-ldap-core</artifactId>
</dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency><groupId>com.unboundid</groupId><artifactId>unboundid-ldapsdk</artifactId>
</dependency>

4.配置application.properties文件

#配置LDAP
spring.ldap.embedded.ldif=classpath:server.ldaf
spring.ldap.embedded.base-dn=dc=springframework,dc=org
spring.ldap.embedded.port=8389

5.配置server.ldaf文件

dn: dc=springframework,dc=org
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: springframeworkdn: ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: groupsdn: ou=subgroups,ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: subgroupsdn: ou=people,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: peopledn: ou=space cadets,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: space cadetsdn: ou=\"quoted people\",dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: "quoted people"dn: ou=otherpeople,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: otherpeopledn: uid=ben,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Ben Alex
sn: Alex
uid: ben
userPassword: {SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=dn: uid=bob,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Bob Hamilton
sn: Hamilton
uid: bob
userPassword: bobspassworddn: uid=joe,ou=otherpeople,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Joe Smeth
sn: Smeth
uid: joe
userPassword: joespassworddn: cn=mouse\, jerry,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Mouse, Jerry
sn: Mouse
uid: jerry
userPassword: jerryspassworddn: cn=slash/guy,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: slash/guy
sn: Slash
uid: slashguy
userPassword: slashguyspassworddn: cn=quote\"guy,ou=\"quoted people\",dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: quote\"guy
sn: Quote
uid: quoteguy
userPassword: quoteguyspassworddn: uid=space cadet,ou=space cadets,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Space Cadet
sn: Cadet
uid: space cadet
userPassword: spacecadetspassworddn: cn=developers,ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: groupOfUniqueNames
cn: developers
ou: developer
uniqueMember: uid=ben,ou=people,dc=springframework,dc=org
uniqueMember: uid=bob,ou=people,dc=springframework,dc=orgdn: cn=managers,ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: groupOfUniqueNames
cn: managers
ou: manager
uniqueMember: uid=ben,ou=people,dc=springframework,dc=org
uniqueMember: cn=mouse\, jerry,ou=people,dc=springframework,dc=orgdn: cn=submanagers,ou=subgroups,ou=groups,dc=springframework,dc=org
objectclass: top
objectclass: groupOfUniqueNames
cn: submanagers
ou: submanager
uniqueMember: uid=ben,ou=people,dc=springframework,dc=org

6.创建WebSecurityConfig配置类

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().fullyAuthenticated().and().formLogin();}@Overridepublic void configure(AuthenticationManagerBuilder auth) throws Exception {auth.ldapAuthentication().userDnPatterns("uid={0},ou=people").groupSearchBase("ou=groups").contextSource().url("ldap://localhost:8389/dc=springframework,dc=org").and().passwordCompare().passwordEncoder(new LdapShaPasswordEncoder()).passwordAttribute("userPassword");}
}

7.创建HomeController类

@RestController
public class HomeController {@GetMapping("/")public String index() {return "Welcome to the home page!";}
}

8.运行启动类,输入localhost:8080,出现页面如图:

输入用户名/密码:bob/bobspassword,出现如图所示页面:

Spring Boot使用LDAP认证用户相关推荐

  1. Spring Boot整合JWT实现用户认证(附源码)

    点击上方"程序IT圈",选择"置顶公众号" 每天早上8点50分进来看看,就是最大的支持 来源:https://dwz.cn/yv1Do6e3 什么是JWT JW ...

  2. spring boot项目怎么记录用户操作行为和登录时间_6 个 Github 项目拿下 Spring Boot

    经常浏览技术社区.技术公众号的读者会有一个感受,那么就是 Spring Boot 相关的文章和相关咨询越来越多.包括小逛和技术公众号的博主交流,他们也发现推送 Spring Boot 相关的文章阅读量 ...

  3. Spring Security基于数据库认证用户登录

    Spring Security为我们提供了默认的登录页面,通过重写以AuthenticationManagerBuilder为参数的configure方法,我们可基于各种数据存储来认证用户,比如内存. ...

  4. spring boot结合shiro实现用户-角色-权限的控制(包含用户名密码登陆和手机号验证码登陆)

    spring boot整合shiro实现权限校验 1.首先导入项目所需jar包 <parent><groupId>org.springframework.boot</gr ...

  5. Spring Boot实现简单的用户权限管理(超详细版)

    2020-11-21 更新:解决由于.yml文件引起的数据库链接问题 文章目录 一.前言 二.项目环境 三.项目文件结构 四.项目代码 数据库连接配置 1.Entity层 2.dao层 3.servi ...

  6. Spring Boot整合JWT实现用户认证

    JWT实现用户认证 在介绍完JWT之后我们使用springboot整合JWT实现用户认证. 前后端分离使用JWT做用户认证(概述) JWT实现认证的原理 ​服务器在生成一个JWT之后会将这个JWT会以 ...

  7. spring boot security oauth2 认证服务器搭建

    最近在搞关于oauth2的系统,在网上的资料比较杂乱,也痛苦了不少了时间,最后终于开发好了符合自己实际应用的系统 在这里顺便把整理后的例子发上来,希望能够帮到别人,同时也给自己留个记录 首先,先添加依 ...

  8. spring boot 引用 shiro 认证AD域

    1.首先搭建AD域 地址192.168.0.112 域名gcloud.com 2.编辑配置文件shiro.ini activeDirectoryRealm = org.apache.shiro.rea ...

  9. Spring Boot 微信小程序用户支付、退款及企业付款到用户零钱、银行卡 -- 自用

    配置文件 build.gradle // 注意 com.github.binarywang微信支付包版本应与微信其他包版本一致 compile 'com.github.binarywang:weixi ...

最新文章

  1. Spring4+quartz2集群借助邮箱或是短信实现生日的农历提醒(Quartz实现农历、阴历、公历生日提醒)...
  2. 如何设置树莓派 VNC 的分辨率
  3. make 和 make install 的区别
  4. postgresql fdw mysql_mysql同步数据到PostgreSQL(使用mysql_fdw)
  5. 常见印花疵点及产生原因
  6. python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家
  7. 阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
  8. graphpad prism8教程柱状图_Graphpad Prism 8作图教程(4):散点图
  9. u盘推荐知乎_u盘知乎恢复
  10. 10015---技术栈
  11. mysql 8.0 用户修改为简单密码
  12. iOS上栈溢出崩溃详解
  13. php api开发书籍,概述 · ThinkPHP API开发入门 · 看云
  14. 巴比特 | 元宇宙每日必读:微博动漫将招募全球各类虚拟偶像并为其提供扶持...
  15. 【reversing.kr逆向之旅】Ransomware的writeup
  16. 无人机组装调试步骤(保姆级别教程)
  17. socksDroid结合charles抓取绕过代理的apk数据包(快手/闲鱼等)
  18. 古代汉语王力版复习重点要点
  19. go 语言zip压缩包 读取
  20. 如何使用 Lightly 邀请朋友在线协作?

热门文章

  1. Android Studio开发安卓app 封装WEB(H5,URL)
  2. 前端学习必须掌握的六个知识点
  3. Cmake 官网资料
  4. 深度学习(12)——利用GPU做深度学习
  5. Docker可视化管理工具Kitematic 安装和使用简介
  6. JavaWeb开发---B/S和C/S模式 tomcat服务器 Tomcat项目部署和发布 静态网页和动态网页 tomcat对web项目的目录要求 使用idea开发工具创建web项目 设置默认首页
  7. verilog 数码管显示模块
  8. Pytorch入门——MNIST手写数字识别代码
  9. LXD/LXC 奇怪的重启断网问题解决。
  10. 上海海事大学自动化专业C语言课程代码参考(第一周)