单点登录(SSO)到底是什么东西?

前言

在我实习之前我就已经在看单点登录的是什么了,但是实习的时候一直在忙其他的事,所以有几个网站就一直躺在我的收藏夹里边:

我们经常提到的单点登录(SSO)到底是什么东西?

收藏的一些网站

 

在前阵子有个读者来我这投稿,是使用JWT实现单点登录的(但是文章中并没有介绍什么是单点登录),所以我觉得是时候来整理一下了。

一、什么是单点登录?

单点登录的英文名叫做:Single Sign On(简称SSO)。

初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。

我们经常提到的单点登录(SSO)到底是什么东西?

所有的功能都在同一个系统上

后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

  • 回顾:分布式基础知识

我们经常提到的单点登录(SSO)到底是什么东西?

拆分成多个子系统

拆分成多个子系统

比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。

我们经常提到的单点登录(SSO)到底是什么东西?

登录了天猫,淘宝也登录了

简单来说,单点登录就是在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录。

二、回顾单系统登录

在我初学JavaWeb的时候,登录和注册是我做得最多的一个功能了(初学Servlet的时候做过、学SpringMVC的时候做过、跟着做项目的时候做过…),反正我也数不清我做了多少次登录和注册的功能了…这里简单讲述一下我们初学时是怎么做登录功能的。

HTTP是无状态的协议

众所周知,HTTP是无状态的协议,这意味着服务器无法确认用户的信息。于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie

如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户明细表”

HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一个用户。于是乎:服务器向用户浏览器发送了一个名为JESSIONID的Cookie,它的值是Session的id值。其实Session是依据Cookie来识别是否是同一个用户

所以,一般我们单系统实现登录会这样做:

  • 登录:将用户信息保存在Session对象中
  • - 如果在Session对象中能查到,说明已经登录
  • 如果在Session对象中查不到,说明没登录(或者已经退出了登录)
  • 注销(退出登录):从Session中删除用户的信息
  • 记住我(关闭掉浏览器后,重新打开浏览器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值