用户登录-单点登录

首先是为啥要用单点登录的问题,单点登录也就是SSO

SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

1)、任何系统都必须去登陆服务器进行登录

2)、服务器就记住了登录状态

3)、其他系统访问受保护资源,需要再次登录,跳转到sso_server登录的时候,服务器告诉客户端,已经登录过,无须登录。登录过得信息

 

我这里用的框架是xxl-sso

 

单点登录的核心:

 

浏览器向服务器发送请求的过程:

首先浏览器向服务器发送请求,服务器判断是否登录,如果没有登录,则会把该请求重定向到sso-server去进行登录,认证中心判断是否登录过,如果没有登录,则会返回一个登录页,假如在登录页输入账号密码登录后,会提交账号密码到sso-server认证中心,然后sso-server回去数据库查询该用户的状态,但是由于分布式系统下session用不了,所以这里选择了存储在redis中。登录成功后会给浏览器响应头。响应头里有location(代表浏览器跳转到指定位置),还有set-Cookie(让浏览器保存一个cookie),也就是命令浏览器做上面的两件事,即跳转到指定位置,并且保存一个Cookie。Cookie保存在sso-server域名下。跳转的指定位置就是最初想要访问的那个url。并且当前网页也保存着这个cookie,也就是上面说的给自己也存一份。这个cookie没有存储在sso-server域名下,而是直接存储在当前域名下。这样的话以后浏览器访问当前url都会带上这个cookie,然后直接在client1去redis中通过这个cookie去查询用户信息。

 

第一次登录的关键:

1)认证中心拿到账户密码,查到用户,把用户保存到redis中,通过key保存

2)认证中心把这个key也保存在自己的域名对应的Cookie中

3)把这个key发送给原来本来要去的那个网页,保存在它的域名下,也就是自己也保存一份

 

最终结果是client域名和sso-server域名下都会有一个同名同值的域名。

 

总的来说就是下面这张图:

 

那么单点登录就是想做到一次登录,其他地方就不用再重复登录了,它是怎么做到的呢?也就是第二次登录是怎么做到不用再去登录中心登录的?

 

这就是单点登录的核心:

 

具体是代码实现:

我这里新创建了一个模块,client1.

首先是配置文件:

也就是第一次登录,假如发现没有携带Cookie的话,就会自动重定向到注册中心,也就是ssoserver.com:8082

这是代码:

 

判断的逻辑是这样的,首先会判断ssoUserParm是否为空, 如果不先判断这个的话,后面可能会陷入无限重定向,也就是说就是你第一次登录重定向到了登录中心,登录中心确认了你的登录,并且把生成的Cookie放在了登录中心的域名的浏览器下,并且给目标页的url放了这个cookie,但是你没有取出来用的话,那么登录中心重定向回来,当前页发现你依然没带Cookie,又会让你重定向到登录中心。所以,为了避免这个问题,首先要判断ssoUserParm的是否有了,而这个在你通过登录中心的验证后就会传递给你:

token就是ssouser

这里又把sso_user的数据放进了ssoUserParm中。

假如没有登录的话,就正式进入到登录中心的重定向:

当这些步骤做完后,目标url也保存了一个Cookie,所以以后就不用去登录中心了

 

那么如果把浏览器的Cookie禁用了怎么办?

 

 

所以这个项目并没有用到单点登录,而是直接通过token验证的,当登录成功时会创建一个token,并把token保存在redis中,然后将token返回给用户,以后用户要访问页面,只要带上这个token就行了(就jwt实现 token)

CAS 单点登录 多数据库 SSO 1、 单点登录概述 单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。IBM对SSO有一个形象的解释“单点登录、全网漫游”。 SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见: 1. 减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性 2. 实现安全的同时避免了处理和保存多套系统用户的认证信息 3. 减少了系统管理员增加、删除用户和修改用户权限的时间 4. 增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限 对于内部有多种应用系统的企业来说,单点登录的效果是十分明显的。很多国际上的企业已经将单点登录作为系统设计的基本功能之一。 1.1 单点登录产品 商业SSO软件  专门的SSO商业软件  主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。RSA公司的ClearTrust等。  门户产品供应商自己的SSO产品,  如:BEA的WLES,IBM 的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。 上述商业软件一般适用于客户对SSO的需求很高,并且企业内部采用Domino、SAP、Sieble等系统比较多的情况下。单点登录产品通常需要在应用软件中增加代理模块,而商业SSO产品主要针对大型软件制作了代码模块。 因此,商业SSO软件除了价格问题外,另一个重要问题就是对客户自己的应用系统支持未必十分完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值