SSO单点登录

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

单点登录的好处

用户角度:用户能够做到一次登录多次使用,无需记录多套用户名和密码,省心
系统管理员角度:管理员只需维护好一个统一的账号中心就可以了,方便
新系统开发角度:新系统开发时只需直接对接统一的账号中心即可,简化开发流程,省时

SSO设计与实现

在这里插入图片描述

在这里插入图片描述

用户登录状态的存储与校验

常用的web框架对于session的实现都是生成一个SessionId存储在浏览器Cookie中,然后将session内容存储在服务器端内存中,这个 ken.io 在之前Session工作原理中也提到过。整体也是借鉴这个思路。 用户登录成功之后,生成AuthToken交给客户端保存。如果是浏览器,就保存在Cookie中。如果是手机App就保存在App本地缓存中。本篇主要探讨基于Web站点的SSO。 用户在浏览需要登录的页面时,客户端将AuthToken提交给SSO服务校验登录状态/获取用户登录信息

在这里插入图片描述

用户登录/登录校验

登录时序图
在这里插入图片描述

用户登录后Authtoken保存在cookie中,domain=test.com浏览器会将domain设置成.test.com,这样访问所有*.test.com的web站点,都会将AuthToken携带到服务器,然后通过SSO服务,完成对用户状态的校验/用户登录信息的获取

登录信息获取/登录状态校验

在这里插入图片描述

用户登出

  1. 服务器端清除缓存redis中的状态
  2. 客户端清除存储的AuthToken

登出时序图
在这里插入图片描述

跨域登录,登出

核心思路是客户端存储AuthToken,服务器端通过Redis存储登录信息,由于客户端是将AuthToken存储在Cookie中,所以跨域要解决的问题是如何解决cookie的跨域读写问题

  • 登录完成之后通过回溯的方式,将AuthToken传递给主域名之外的域名,该站点自行将AuthToken保存在当前域下的Cookie中
  • 登出完成之后通过回调的方式,调用非主域名站点的登出界面,完成设置cookie的AuthToken过期的操作

跨域登录(主域名已登录)
在这里插入图片描述

跨域登录(主域名未登录)
在这里插入图片描述

跨域登出
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值