Spring Boot 项目集成Windows域账户认证
问题描述
将已有的Spring Cloud项目与AD域账户集成,要求实现效果如下
1、系统用户就是Ad域账户,使用Ad域用户名密码登录。
2、当用户在公司内网时,如果浏览器已经登录过域,直接进入系统,无需登录。否则通过浏览器的windows认证窗口登录。就是IIS的Windows认证效果。
3、当用户在公司外网时,通过系统原有登录界面输入Ad域账户用户名密码登录。
原有系统的用户登录及认证
项目是一个Spring Cloud项目,本身有一个用户服务,根据用户名、密码发放动态且有时限的User-Token。客户端每次请求都将User-Token写入请求的Header中,服务端根据User-Token判别用户,进行权限控制。
实现方案
1、原有的用户名密码认证服务通过连接AD域服务器实现用户名密码验证,使用spring-boot-starter-data-ldap实现(网上搜,maven直接依赖,很简单)。
2、内网的Windows认证效果。据说Waffle可以实现,但是资料不多,而且据说要必须安装在Windows中,实际情况我不了解。我的解决方案更简单,就是直接用.Net做,IIS设置成Windows 认证。认证后调用我本身的用户服务(这个服务需要服务间认证才能执行,否则有安全隐患),由原有的用户服务生成Token,再由IIS服务器返回Token。
具体应用认证过程如下图所示
注:
1、如果第一次请求返回404,说明用户不在公司域内,直接转向系统原有登录界面即可。
2、浏览器请求IIS获取Token必须采用JSONP的Get方法实现,否则取不到。
原理:普通Ajax是基于xmlhttprequest的,只会返回无权限,不会弹出Windows登陆窗口。JSONP本质是资源访问方式,类似于下载一个静态资源,所以IIS当作资源访问处理,会弹出Windows登陆窗口。
Spring Boot 项目集成Windows域账户认证相关推荐
- Spring Boot项目集成AWS SDK连接到AWS S3,实现上传下载功能
本文主要描写在Spring Boot项目里集成AWS SDK连接到AWS S3,实现上传下载功能的具体代码和注意事项.如有不足和错误之处,欢迎指正. AWS S3相关介绍 AWS S3(官网): ht ...
- Spring boot项目集成Sharding Jdbc
环境 jdk:1.8 framework: spring boot, sharding jdbc database: MySQL 搭建步骤 在pom 中加入sharding 依赖 <depend ...
- Spring boot项目实现跨域,java
1.前情 搭建的微服务项目,页面放到tomcat中,前端代码与访问接口同域名不同接口号,所以tomcat能访问接口,页面访问就报错.需要后台修改下配置. 2. 解决方法 (1)返回新的 CorsFil ...
- 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!
1. 序言 在大学的课程学习,非常注重团队协作的培养,在企业开发中,团队协作开发项目的场景更是甚多.另外,在当下的热门技术栈中,微服务开发模式.前后端分离开发模式逐渐盛行,Spring Boot.VU ...
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
STS创建Spring Boot项目实战(Rest接口.数据库.用户认证.分布式Token JWT.Redis操作.日志和统一异常处理) 1.项目创建 1.新建工程 2.选择打包方式,这边可以选择为打 ...
- 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成
前提:先搭建好本地的单机运行项目:http://www.cnblogs.com/EasonJim/p/7643630.html 说明:下面的示例是基于Spring Boot搭建的,对于Spring项目 ...
- Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)
说明: (1)介绍了两种创建Spring Boot项目的方式:[Spring 官网start.spring.io]方式,[IDEA集成的Spring Initializr]方式: (2)更推荐使用[I ...
- Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...
- spring boot项目 部署 使用Procrun 注册为windows服务。
1.下载Procrun 下载链接:https://downloads.apache.org/commons/daemon/binaries/windows/ 2.新建部署目录workSpace 3.添 ...
- 后端开发实践:Spring Boot项目模板
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 作者 ...
最新文章
- STM32FLASH读写程序
- 2018年全国及31省市数据中心相关政策汇总及解读「全」
- 路由器固件下的小试牛刀,与漏洞相关的经验分享
- boost::core模块实现np地址
- php数组o m n mn,O(m + n)和O(mn)之间的区别?
- duration java_Java Duration类| plusDays()方法与示例
- Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换
- C#3.0新特性 和 Javascript
- LOJ #6051. 「雅礼集训 2017 Day11」PATH
- varnish 4.0 官方文档翻译17-Hashing
- Java中什么时候使用extends,什么时候使用implements?
- Spring整合- mongodb
- python分类时特征选择_推荐 :使用Python实现机器学习特征选择的4种方法(附代码)...
- 成都理工大学乐千桤java考试,成都理工大学方案.PDF
- 关于awk 中如何使用 if条件判断句
- 关于FeedSky话题广告
- matlab正弦函数傅里叶变换,正弦函数及其傅里叶变换(一)
- trans系列是sci几区_sci怎么看几区
- OpenGL ES 纹理
- 2022win7cf烟雾头最新调法