相同顶级域名的单点登录 SSO

引子

在面试过程中有时候会被问到单点登录,那么单点登录又称之为Single Sign On,简称SSO,单点登录可以通过基于用户会话的共享,他分文两种,先来看第一种,那就是他的原理是分布式会话来实现。

比如说现在有个一级域名为 www.xxx.com,是教育类网站,但是慕课网有其他的产品线,可以通过构建二级域名提供服务给用户访问,比如∶ music.xxx.com, shop.xxx.com,blog.xxx.com 等等,分别为慕课音乐,慕课电商以及慕课博客等,用户只需要在其中一个站点登录,那么其他站点也会随之而登录。

也就是说,用户自始至终只在某一个网站下登录后,那么他所产生的会话,就共享给了其他的网站,实现了单点网站登录后,同时间接登录了其他的网站,那么这个其实就是单点登录,他们的会话是共享的,都是同一个用户会话。

Cookie+ Redis 实现 SSO

那么之前我们所实现的分布式会话后端是基于redis的,如此会话可以流窜在后端的任意系统,都能获取到缓存中的用户数据信息,前端通过使用cookie,可以保证在同域名的一级二级下获取,那么这样一来,cookie中的信息userid和token是可以在发送请求的时候携带上的,这样从前端请求后端后是可以获取拿到的,这样一来,其实用户在某一端登录注册以后,其实cookie和redis中都会带有用户信息,只要用户不退出,那么就能在任意一个站点实现登录了。

  • 那么这个原理主要也是cookie和网站的依赖关系,顶级域名
    www.xxx.com和*.xxx.com 的cookie值是可以共享的可以被携带至后端的,比如设置为 .xxx.com, .t.yyy.com,如此是OK的。
  • 二级域名自己的独立cookie是不能共享的,不能被其他二级域名获取,比如∶music.xxx.com的cookie是不能被 mtv.xxx.com共享,两者互不影响,要共享必须设置为.xxx.com。

Cookie共享测试

找到前端项目app.js,开启如下代码,设置你的对应域名,需要和SwitchHosts相互对应∶
在这里插入图片描述

如下图,可以看到,不论是在 shop 或是center中,两个站点都能够在用户登录后共享用户信息。
在这里插入图片描述

如此一来,cookie中的信息被携带至后端,而后端又实现了分布式会话,那么如此一来,单点登录就实现了,用户无需再跨站点登录了。上述过程我们通过下图来更加具象化的展示,只要前端网页都在同一个顶级域名下,就能实现cookie与session的共享∶

在这里插入图片描述

那么目前我们的系统在经过分布式会话的完成以后,外加cookie设置的配合,就已经能够达到相同顶级域名下的单点登录啦~!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Escape2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值