JavaWeb基于AD域的单点登录怎么做?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb基于AD域的单点登录怎么做?相关的知识,希望对你有一定的参考价值。
有AD用户名和密码时,AD域验证我已经实现了。。但是开机时已用AD域登录了,在web登录页面怎么免登陆(不需要再输用户和密码了)?
参考技术A 1,AD域的用户和系统的用户名称一样2,AD验证正确,连接我们的数据库,取出密码(MD5加密过的),将用户名和密码交给我们的系统验证,这时由于我们系统采用了md5加密,这时直接去掉再次加密,因为已经加密过了。
这样只要通过AD域验证,就直接去取md5加密的密码,然后那正确的用户和密码去验证保证了能登陆我们的系统。追问
怎么AD验证?这时候只能拿到'系统的用户名称';没密码的话,怎么验证?或者怎么验证这个用用已在本IP上登录AD域?
Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定
参考技术A单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring Security 来实现一个最简单的 跨域 SSO客户端 。
单点登录主流都是基于共享 cookie 来实现的,下面分别介绍 同域 和 跨域 下的两种场景具体怎样实现共享 cookie 的
适用场景: 都是企业自己的系统,所有系统都使用同一个一级域名通过不同的二级域名来区分。
举个例子: 公司有一个一级域名为 zlt.com ,我们有三个系统分别是: 门户系统(sso.zlt.com) 、 应用1(app1.zlt.com) 和 应用2(app2.zlt.com) ,需要实现系统之间的单点登录,实现架构如下:
核心原理:
单点登录之间的系统域名不一样,例如第三方系统。由于域名不一样不能共享 Cookie 了,这样就需要通过一个单独的授权服务(UAA)来做统一登录,并基于共享UAA的 Cookie 来实现单点登录。
举个例子: 有两个系统分别是: 应用1(webApp.com) 和 应用2(zlt.com) 需要实现单点登录,另外有一个 UAA授权中心(sso.com) ,实现架构如下:
核心原理:
Oauth2单点登录 除了需要 授权中心 完成统一登录/授权逻辑之外
各个系统本身(sso客户端)也需要实现以下逻辑:
以上逻辑只需使用一个 @EnableOAuth2Sso 注解即可实现
SpringBoot配置如下:
下图是访问 sso客户端 时 @EnableOAuth2Sso 注解与 UAA授权中心 通过 Oauth2授权码模式 交互完成单点登录的步骤
PS :如果系统用的不是 Spring Security 怎么办?理解原理自行实现
https://gitee.com/zlt2000/microservices-platform/tree/master/zlt-demo/sso-demo
扫码关注有惊喜!
以上是关于JavaWeb基于AD域的单点登录怎么做?的主要内容,如果未能解决你的问题,请参考以下文章