多系统单点登录

1 篇文章 0 订阅
单点登录(SSO)允许用户在一次登录后访问多个相互信任的应用系统。主要分为两种实现方式:主域名相同和多域名系统。对于主域名相同的场景,通过在根域名下设置Cookie实现;而对于多域名系统,通常采用CAS协议,通过认证中心进行Token验证,建立全局和局部会话。SSO认证中心在此过程中起到中转站的作用,确保用户在不同系统间无缝切换登录状态。
摘要由CSDN通过智能技术生成

单点登录说明

单点登录的英文名叫做:Single Sign On(简称SSO)。一般应用于多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源。如登录访问 www.abc.com 后,对于www.efg.com 也是登录访问。
比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。
以下实现基于cookie等认证,对于cookie的原理不做详细说明,可以单独了解。

主域名相同:

如果公司内的所有业务都共享到 xxx.com 一个主域名下,则可以将 Token 的 Cookie 种到 xxx.com 这个根域名下,这样在任一系统登录后,在访问其他业务系统就不需要重新登录了,因为其他业务系统也是 xxx.com后缀,浏览器会把根域名的 Cookie 带到每个请求中,即可实现单点登录功能。

这个方案的优点是实现简单,前端的接入成本更低,但是有以下几个缺点:
1、限制了业务系统使用域名的自由,在跨三方时几乎是不可行的。
2、Token 种到根域名下,能访问所有业务的资源,无法做到 Token 的隔离。

多域名系统:

当各系统使用不同域名时,一般采用CAS方案,下面详细说明一下CAS原理。

如果已经将登录单独抽取成系统出来,我们还能这样玩。现在我们有两个系统,分别是www.java3y.com和www.java4y.com,一个SSOwww.sso.com
在这里插入图片描述

首先,用户想要访问系统Awww.java3y.com受限的资源(比如说购物车功能,购物车功能需要登录后才能访问),系统Awww.java3y.com发现用户并没有登录,于是重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:

www.sso.com?service=www.java3y.com
sso认证中心发现用户未登录,将用户引导至登录页面,用户进行输入用户名和密码进行登录,用户与认证中心建立全局会话(生成一份Token,写到Cookie中,保存在浏览器上)

在这里插入图片描述

随后,认证中心重定向回系统A,并把Token携带过去给系统A,重定向的地址如下:

www.java3y.com?token=xxxxxxx
接着,系统A去sso认证中心验证这个Token是否正确,如果正确,则系统A和用户建立局部会话(创建Session)。到此,系统A和用户已经是登录状态了。
在这里插入图片描述

此时,用户想要访问系统Bwww.java4y.com受限的资源(比如说订单功能,订单功能需要登录后才能访问),系统Bwww.java4y.com发现用户并没有登录,于是重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:

www.sso.com?service=www.java4y.com
注意,因为之前用户与认证中心www.sso.com已经建立了全局会话(当时已经把Cookie保存到浏览器上了),所以这次系统B重定向到认证中心www.sso.com是可以带上Cookie的。

认证中心根据带过来的Cookie发现已经与用户建立了全局会话了,认证中心重定向回系统B,并把Token携带过去给系统B,重定向的地址如下:

www.java4y.com?token=xxxxxxx
接着,系统B去sso认证中心验证这个Token是否正确,如果正确,则系统B和用户建立局部会话(创建Session)。到此,系统B和用户已经是登录状态了。
在这里插入图片描述

看到这里,其实SSO认证中心就类似一个中转站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值