问题描述

将已有的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域账户认证相关推荐

  1. Spring Boot项目集成AWS SDK连接到AWS S3,实现上传下载功能

    本文主要描写在Spring Boot项目里集成AWS SDK连接到AWS S3,实现上传下载功能的具体代码和注意事项.如有不足和错误之处,欢迎指正. AWS S3相关介绍 AWS S3(官网): ht ...

  2. Spring boot项目集成Sharding Jdbc

    环境 jdk:1.8 framework: spring boot, sharding jdbc database: MySQL 搭建步骤 在pom 中加入sharding 依赖 <depend ...

  3. Spring boot项目实现跨域,java

    1.前情 搭建的微服务项目,页面放到tomcat中,前端代码与访问接口同域名不同接口号,所以tomcat能访问接口,页面访问就报错.需要后台修改下配置. 2. 解决方法 (1)返回新的 CorsFil ...

  4. 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!

    1. 序言 在大学的课程学习,非常注重团队协作的培养,在企业开发中,团队协作开发项目的场景更是甚多.另外,在当下的热门技术栈中,微服务开发模式.前后端分离开发模式逐渐盛行,Spring Boot.VU ...

  5. STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)

    STS创建Spring Boot项目实战(Rest接口.数据库.用户认证.分布式Token JWT.Redis操作.日志和统一异常处理) 1.项目创建 1.新建工程 2.选择打包方式,这边可以选择为打 ...

  6. 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成

    前提:先搭建好本地的单机运行项目:http://www.cnblogs.com/EasonJim/p/7643630.html 说明:下面的示例是基于Spring Boot搭建的,对于Spring项目 ...

  7. Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)

    说明: (1)介绍了两种创建Spring Boot项目的方式:[Spring 官网start.spring.io]方式,[IDEA集成的Spring Initializr]方式: (2)更推荐使用[I ...

  8. Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能

    Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...

  9. spring boot项目 部署 使用Procrun 注册为windows服务。

    1.下载Procrun 下载链接:https://downloads.apache.org/commons/daemon/binaries/windows/ 2.新建部署目录workSpace 3.添 ...

  10. 后端开发实践:Spring Boot项目模板

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 作者 ...

最新文章

  1. STM32FLASH读写程序
  2. 2018年全国及31省市数据中心相关政策汇总及解读「全」
  3. 路由器固件下的小试牛刀,与漏洞相关的经验分享
  4. boost::core模块实现np地址
  5. php数组o m n mn,O(m + n)和O(mn)之间的区别?
  6. duration java_Java Duration类| plusDays()方法与示例
  7. Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换
  8. C#3.0新特性 和 Javascript
  9. LOJ #6051. 「雅礼集训 2017 Day11」PATH
  10. varnish 4.0 官方文档翻译17-Hashing
  11. Java中什么时候使用extends,什么时候使用implements?
  12. Spring整合- mongodb
  13. python分类时特征选择_推荐 :使用Python实现机器学习特征选择的4种方法(附代码)...
  14. 成都理工大学乐千桤java考试,成都理工大学方案.PDF
  15. 关于awk 中如何使用 if条件判断句
  16. 关于FeedSky话题广告
  17. matlab正弦函数傅里叶变换,正弦函数及其傅里叶变换(一)
  18. trans系列是sci几区_sci怎么看几区
  19. OpenGL ES 纹理
  20. 2022win7cf烟雾头最新调法

热门文章

  1. 一些div垂直居中的方法
  2. 大数据的三大理念解析
  3. 线性系统理论和设计 (仝茂达)习题答案
  4. 使用Python GDAL库对高分三号全极化SAR影像进行RPC几何校正(PolSARpro格式)
  5. java开发软件怎么安装不了_java开发软件的安装
  6. 二叉平衡树的旋转操作
  7. Android Native报错定位(addr2line工具的使用)
  8. java实现选择排序(思路与实现)
  9. 微信小程序tap事件中target与currentTarget的区别
  10. java能写游戏脚本吗_java能写游戏脚本吗?