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域的单点登录怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

系统之间怎么实现单点登录?

跨多个域的单点登录[关闭]

基于 SAML 2.0 的跨域单点登录 - 概念

可跨域的单点登录(SSO)实现方案

完全跨域的单点登录

cas 单点登录 关于server获取用户名的问题