SpringBoot集成 Windows2012 AD 认证服务
目录
1、应用背景
2、Windows2012 AD 服务安装及验证是否成功
2.1、Microsoft Windows Server 2012 Ad域搭建
2.2、安装完毕后如何验证是否成功
3、SpringBoot如何集成Windows AD服务认证
4、实践成果内容
5、参考文章
6、最后实现可执行源码
1、应用背景
因最近项目需要做欧洲的国际版本;欧洲那边要求使用Windows AD认证服务;同时欧盟在2018年05月24日出台了《通用数据保护条例》(General Data Protection Regulation,简称GDPR)。所有如果针对业务场景为企业内部系统需要能够实现Windows AD的认证。所以需要进行相关的Window AD进行验证和集成技术预研。
Window AD是一种 LDAP协议的Microsoft一种实现。关于LDAP相关文章介绍:
LDAP服务器的概念和原理简单介绍
我花了一个五一终于搞懂了OpenLDAP
2、Windows2012 AD 服务安装及验证是否成功
2.1、Microsoft Windows Server 2012 Ad域搭建
一、Active Directory概念
AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条件来简单而有效率的在大量数据中查找匹配的信息。支撑这种信息检索的技术就是LDAP协议。
AD域:为了避免账户数据量过大造成的管理不便,我们会将所有的账户数据按照域的概念来划分,再分别对每一个域进行管理。一般AD域或与DNS域挂钩。
AD DS(Active Directory Domain Server):活动目录域服务,是一种Win2012R2服务器所提供的服务,由AD域控制器来实现。应用了AD的信息检索思维,能够高效快速的处理庞大的账户数据。实现了统一集中管理企业员工账号信息,做到单点登录,多处访问。值得注意的是,因为AD DS要管理大量的账户信息,所以就决定了AD DS需要一个数据库来支撑整个服务,而这个扮演数据库的角色就是存在于AD域控制器中的AD数据库。
AD域控制器:AD域控制器包含了AD数据库,用于存储AD域内的账号数据,提供了对数据的增删查改功能。而且AD域控制器也提供了AD DS服务,所以安装一个AD域控制器,等效于创建了AD DS域服务。
二、AD服务器的优点
1. 集中管理账号,应用程序等计算机资源。
2. 域账号能够实现单点的远程登陆。
AD与DNS的关系:
域控制器需要将自己注册到DNS服务器中,以便其他的计算机可以通过DNS解析服务来找到这台域控制器从而实现登录信息验证,而且此DNS服务器最好支持动态更新功能。所以AD服务需要有DNS服务的支撑,否则也可以通过修改Hosts来实现上述的功能。
具体安装请参考下列文章 :
基本AD安装可参考:Windows Server 2012搭建AD域(活动目录)
如果需要安装证书类可以参考:Microsoft Windows Server 2012 Ad域搭建
2.2、安装完毕后如何验证是否成功
安装完毕后需要使用一个工具LDAPAdmin进行验证;安装是否正确。
此工具的下载地址:http://www.ldapadmin.org/download/ldapadmin.html
安装完毕后需要进行Window AD的连接
最后验证链接成功
3、SpringBoot如何集成Windows AD服务认证
我们自己的项目使用的是SpringBoot开发框架,所以需要使用SpringBoot框架来集成;本人在网络上也搜索很多示例进行验证,以及同事也验证部分内容;但是很多都是失败的结果。最后通寻找到以下参考文章,并且与我目前场景一致;最后决定参考此文章进行修改调整。Vue + Jwt + SpringBoot + Ldap 完成登录认证
首先创建一个SpringBoot工程,然后在Maven的pom.xml文件之后引入相关的Ldap协议Jar。具体引入打pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ad.ldap</groupId><artifactId>adldap</artifactId><version>0.0.1-SNAPSHOT</version><name>adldap-demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-ldap</artifactId></dependency> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency> <!-- 热启动 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.7.0</version></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.24</version></dependency> </dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- Hot swapping --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.0.RELEASE</version></dependency></dependencies></plugin></plugins></build></project>
application.properties 主要配置文件如下
#ldap_config
#ldap配置信息,注意这里的userDn一定要写这种形式。referral设置为follow,说不清用途,似乎只有连接AD时才需要配置
ldap.url=ldap://192.168.9.236:389
ldap.base=dc=wdcloud,dc=cc
ldap.userDn=cn=Administrator,cn=Users,dc=wdcloud,dc=cc
ldap.userPwd=password(AD服务器密码)
ldap.referral=follow
ldap.domainName=@wdcloud.cc
4、实践成果内容
最后通过相关验证实践,实现了连接Windows AD 最后成果如下
如果密码错误返回401状态码:
5、参考文章
Vue + Jwt + SpringBoot + Ldap 完成登录认证
基本AD安装可参考:Windows Server 2012搭建AD域(活动目录)
如果需要安装证书类可以参考:Microsoft Windows Server 2012 Ad域搭建
LDAP服务器的概念和原理简单介绍
我花了一个五一终于搞懂了OpenLDAP
6、最后实现可执行源码
https://github.com/jianxia612/springboot-adldap-demo.git
SpringBoot集成 Windows2012 AD 认证服务相关推荐
- springboot集成Spring Security oauth2(八)
由于公司项目需要,进行SpringBoot集成Spring Security oauth2,几乎搜寻网上所有大神的案例,苦苦不能理解,不能完全OK. 以下是借鉴各大神的代码,终于demo完工,请欣赏 ...
- 粉丝说SpringBoot集成validation校验参数有坑,我试了试
公众号中分享了一篇文章,关于SpringBoot集成validation校验参数的,粉丝留言说有坑. 原留言如下: 有坑,你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方 ...
- SpringBoot集成Kafka消息队列
1.说明 Spring可以方便的集成使用 Kafka消息队列 , 只需要引入依赖包spring-kafka, 注意版本兼容问题, 本文详细介绍SpringBoot集成Kafka的方法, 以及生产者和消 ...
- 【无废话】SpringBoot集成Kafka消息队列
0.前言 本人整理收藏了22年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,我认为对面试与学习来说是非常有用的,想要资料的话请点白嫖这份答案←戳我** 1.说明 Spring可以 ...
- SpringBoot集成websocket能力(stomp)
序 之前有分享过springBoot集成Websocket推送信息.今天主要是来继续分享升级版,这次是采用STOMP协议.用这个的好处有很多,比如可以屏蔽浏览器之间的差异,更方便对接消息中间件等. 一 ...
- Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源
全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...
- SpringBoot集成FreeMarker
给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...
- springboot集成swagger2测试接口
springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...
- springboot 集成logback
springboot 集成logback 1.application.properties配置文件指定logback.xml logging.config=classpath:logback.xml ...
最新文章
- Oracle使用dblink连接SqlServer
- SAP 选择屏幕的收起与展开(Collapse and Expand)
- 关于如何查看mysql版本及其端口号
- maven summer_我在Google Summer of Code的经历
- 笨办法学 Python · 续 练习 21:二分搜索
- 张一鸣倡议AI发展要讲责任,马维英谈头条AI现状和未来 | 实录
- [linux] redhat 7 ssh 安装配置免密登录
- hdu4588Count The Carries
- dht磁力链php,基于 DHT 网络的磁力链接和BT种子的搜索引擎架构
- 高中计算机会考题,四川省高中信息技术会考资料及试题
- edem颗粒替换_EDEM离散元软件中颗粒替换与填充编程模版
- python数据可视化-简单案例
- 自动化脚本开发,真香.....
- 炸裂!PDF转Word彻底告别收费时代,这个OCR开源项目要逆天!
- HTML DOM属性和方法
- 测试用例编写练习(二)
- HTTP协议及TCP分析
- 【C++】黑马程序员C++核心编程学习笔记(完结)
- c++序列号生成(注册码)附demo
- CSS样式优先级计算方法
热门文章
- 语法分析器(syntax analyzer)【Python实现】
- 重磅!涵盖全微服务操作的Spring Cloud 文档竟出自Alibaba
- 14-6 使用 glade 完成布局
- 正则表达式解析器的编写
- 人事管理系统 —— 数据库+可视化
- 风速 电池测试软件,QDF-6型智能热球风速计操作规程
- HardLock 加密狗模拟解密硬复制HardLock
- android屏幕适配的目的,剖析Android屏幕适配及各方案
- texturePacker 指令 .pvr.ccz 转 .png, 报错 : Not all sprites could be packed into the texture!
- rebar3使用本地依赖