单点登录实现

前言

在日常生活中,很多人由于忘记某些网站的登录密码而烦恼,因为大多数用户都要记忆不少于 10 个用户名和相应密码。随着信息化飞速发展,大型企业和政府部门等都开始使用电子系统进行办公,整个办公系统由多个不同的子系统构成,如办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等。如果每个系统都使用独立的登录和验证机制,那么每天工作人员都要登录不同的系统进行办公。用户登录的频繁操作,降低了员工的工作效率,造成工作成本的浪费。而大量的密码和用户名的记忆时间长了也会出现问题,忘记密码或者混淆密码都会造成很大的麻烦。基于以上原因,为用户提供一个畅通的登录通道变得十分重要。

这时候用户希望我在一个系统登录之后可以默认在它的关联系统(二级域名必须相同)中也是已登录状态,避免繁琐的多次登录。这时候就需要 SSO(Single Sign On)来帮助我们实现。

单点登录(SingleSign-On,SSO)是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次,就可以访问多个系统。

实现思路

Cookie 作为凭证媒介

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

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

通过页面重定向的方式

逻辑流程图

错误之处欢迎交流指正,感谢~

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lillian
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信