单点登录原理

单点登录原理

一、什么是单点登录

单点登录英文全称Single Sign On,简称SSO。指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。

二、为什么需要单点登录

在一些子系统用户信息重叠的项目中,可以通过SSO实现统一的登录管理、认证授权。最经典的例子就是淘宝和天猫,如果你登录了淘宝,那么当你访问天猫的时候就会自动登录,因为这两个系统的账户是统一管理认证的。
那么就有一个问题:为什么无法用传统的单系统登录,一定要用单点登录?

cookie的跨域问题

最大的原因就是传统的单系统登录是使用Cookie来保持登录状态的,那么在这种多系统的登陆中,域名往往是不同的,而Cookie是无法跨域的。

也就是说我们需要其他的方案来代替Cookie去解决这种一次登录的问题。其实SSO就可以理解成为一个中转站,我们把Cookie统一存储到SSO中,访问的时候带上访问的路径以及其他参数,这样就可以登录后将你返回到你访问过来的页面,并且在SSO中留下Cookie。因为Cookie是前后端共享的,所以随后在其他的系统想要登录的时候只需要向SSO发送请求查看这个Cookie是否过期就可以保证多个系统中角色的登录状态。

三、Cookie+Token的单点登录原理

假设我们现在有A、B、C、D四个系统,以及SSO系统。ABCD四个系统均被SSO信任,且用户依托于SSO。
在这里插入图片描述
当我们在系统A中做请求操作的时候,会先检查登录状态,如果没有代表登录的Token,就向SSO页面发起loginCheck,检查SSO页面中是否有对应的Cookie,如果没有我们会被重定向到SSO页面中去(携带系统A的地址,以及其他参数),进行注册/登录。登录成功后,SSO页面会在当前页面中保留标识用户在对应系统登录成功的Cookie并且根据请求过来的参数,将我们重新重定向到系统A中,并告知我们已经登陆了(以Token的形式)
在这里插入图片描述
随后当我们在这台机器上再次访问其他的BCD任意一个系统时,都会向SSO系统发起一次loginCheck。这时SSO系统中已经有了Cookie了,那么就会跳过登录直接给对应的系统颁发Token,表示用户在该系统中登录了。
在这里插入图片描述
这样就可以实现单一系统登录后,其他互相信任的系统均可以免去登录步骤直接登录

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值