多系统单点登录(sso)设计

zz/2023/12/3 2:04:11

文章目录

  • 问题提出
  • 登录信息共享机制设计
    • 简单实现
    • 淘宝天猫登录信息共享(简化版)
  • 登录流程

问题提出

  • 多个系统中,如何做到其中一个系统登录了,在浏览器中打开其他系统也会成登录状态?比如在淘宝登陆了,打开天猫网页,也会显示已登录
  • 网上有一种设计方案是通过二级域名来共享登录状态,本设计是针对不同域名下登录状态的信息共享。

登录信息共享机制设计

简单实现

实现原理:

通过在sso系统域名下存储信息,其他系统通过获取sso域下的cookie信息来获取登录信息
不过有个问题:出于安全的原因,当前域不能获取其他域的cookie信息,所以只能通过跨域访问sso系统,然后返回登录信息

在开始前我们设定两个变量:

  • t_token 这个浏览器的一个标志,在同一个浏览器中,所有相关系统内的网站共享同一个t_token
  • access_token 用户真正的token

要实现上述功能,我们可以使用跨域机制来实现共享token。这里我们设置三个系统,两个客户端系统,一个sso系统。如图:
在这里插入图片描述

流程如下:
在这里插入图片描述
以上就是通过跨域来同步token的流程。

在上面的流程中,会存在一个跨域访问的问题,一般来说有两种解决方法:

  • 使用jsonp来获取
  • 使用CORS机制跨域获取数据

具体的可以看这两篇文章:

CORS详解
跨域访问数据

淘宝天猫登录信息共享(简化版)

淘宝天猫token的获取原理是一样的,但是流程要稍复杂一些。主要是多了几个重定向的步骤。废话不多说,直接看时序图,咱们看图说话:
注:图中设计的网址并非是实际的,我只是写来做例子
在这里插入图片描述

可以看到,流程中经过多次的重定向最终使天猫中的cookie中有了t_tokenaccess_token的值

重定向的意义:
实际上我们完全可以通过跨域一次请求就可以把token拿到,就像我们的第一个例子一样,为什么要经过这么多次重定向呢。个人认为有以下几点:

  1. 获取token的值完全由服务器设置到对应域名的cookie中,在安全方面更有保障
  2. 在请求过程中,服务器可以检测该域名下的请求是否允许重定向,可以进一步保障安全

登录流程

登录流程相对来说大家比较熟悉,在此就简单的写下流程就行了。在登录之后可以通过上面的设计共享token
流程如下:
在这里插入图片描述

登录完成后再sso.com和a.com都有t_token,access_token。如果此时打开网页b.com,跨域获取访问sso系统,然后获得登录信息

以上讲了多系统单点登录的原理和流程图,其中需要注意的点是跨域访问,如果不懂前端的,比如我一开始看到请求被拒绝访问,也是一脸懵逼。我在文中也放了两篇优秀的文章,不懂的可以看看。


http://www.ngui.cc/zz/1443297.html

相关文章

单点登录详解

一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次…

单点登录技术

单点登录的解决方案 单点登录:多个系统,只需要一次登录就能访问所有系统,只需要一次退出,就能退出所有系统。 应用:淘宝与天猫 方案一: Cookie jsoup 对于不需要频繁验证用户是否登录的系统 (安全要求较低…

金蝶EAS通过第三方系统单点登录

这里写自定义目录标题金蝶EAS通过第三方系统单点登录操作步骤第三方系统代码示例示例jsp代码如下:示例java代码如下:金蝶EAS通过第三方系统单点登录 操作步骤 1、需要有LtpaTokenManager.jar包 2、从EAS服务器上下载 server\profiles\server(1…n)\co…

单点登录说明

什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分 1、登录 相比于单系统登录&…

开源sso单点登陆系统推荐

一、CAS 地址https://www.apereo.org/projects/cas CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供…

扫码点单系统介绍,源码

一、基本介绍 随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行业的未来趋势,发展空间巨大。 用微信自带的“扫一扫”工具或其他二维码扫描工具扫描餐厅的二维码…

Python图形界面实现咖啡店点单系统

问题 接到粉丝在圈子里留言想知道怎么写一个简单的咖啡店点单系统,大致满足以下要求:进入程序会有欢迎界面,然后显示咖啡品种以及对应单价,可以搜索相应商品输入数量进行点单,需要会员打折功能,能记录每天的…

点单系统

设计一个点餐系统 * 使用二维数组存储 菜单名称和对应的价格 * 1.录如菜单功能 * 用户录入菜品数量 (键盘自己录入数量) 10 * 依次录入每个菜单名称和价格 * 2.展示所有菜单 * 3.开始点餐 * 展示所有菜单 * 如果用户输入菜单…

Centos7 安装crontab

1.查看crontab是否安装: yum -y install vixie-cron yum -y install crontabs 2.启动: systemctl start crond.service 3.查看状态: systemctl status crond.service 4.关闭: systemctl stop crond.service 5.重启: systemctl restart …

Centos7 更换yum软件源

yum源的默认仓库文件夹是 /etc/yum.repos.d/,只有在这个目录第一层的.repo结尾的文件,才会被yum读取* 1.下载wget命令 yum install wget -y # wget命令就是在线下载一个url的静态资源2.备份旧的yum仓库源 cd /etc/yum.repos.d mkdir repobak # …