扫码关注公众号「政采云前端团队」,获取更多不掺水的原创好文~
![46cea79f7aabe24c0a002a9d6d6e8364.png](https://i-blog.csdnimg.cn/blog_migrate/66bd06b2dfe16b2fdead0d23fd56d581.jpeg)
![8177624d850c4d4c9047017de1afacfc.png](https://i-blog.csdnimg.cn/blog_migrate/4f150aaa3f1baa6c1c4c56aa2586eb1b.jpeg)
概念
单点登录(Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统。
前置介绍
同源策略 限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互,要求协议,端口和主机都相同。
HTTP 用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是无状态协议,所以服务器单从网络连接上无从知道客户身份。 那要如何才能识别客户端呢?给每个客户端颁发一个通行证,每次访问时都要求带上通行证,这样服务器就可以根据通行证识别客户了。最常见的方案就是 Cookie。
Cookie 是客户端保存用户信息的一种机制,保存在客户机硬盘上。可以由服务器响应报文 Set-Cookie 的首部字段信息或者客户端 document.cookie 来设置,并随着每次请求发送到服务器。子域名可以获取父级域名 Cookie。
Session 其实是一个抽象概念,用于跟踪会话,识别多次 HTTP 请求来自同一个客户端。Cookie 只是通用性较好的一种实现方案,通常是设置一个名为 SessionID(名称可自定义,便于描述,本文均使用此名称)的 Cookie,每次请求时携带该 Cookie,后台服务即可依赖此 SessionID 值识别客户端。
单系统登录
在介绍单点登录之前,我们先来了解一下在浏览器中,访问一个需要登录的应用时主要发生的一系列流程,如下图所示:
![5621e27e7871cbf7bfa3e8fb6e6c554a.png](https://i-blog.csdnimg.cn/blog_migrate/479b312218861fe112fe7ae76fa7ca04.jpeg)
以下为连环画形式,期望能让读者更好的理解:
![ebb744ce1c16b3521072a2b5172b4f62.png](https://i-blog.csdnimg.cn/blog_migrate/d8b0361d3c39d6d6add05f66590e9cb2.jpeg)