前言

单点登录英文全称为 Single Sign On,简称 SSO。指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录。
一般情况下,一个公司有很多产品,在登录其中一个产品的时候,希望访问另外一个产品的时候也是处于登录状态。

单点登录

同域下的单点登录

同域指的是两个域名处于同一个顶级域或者二级域名下。比如 A.baidu.comB.baidu.com同属于 .baidu.com。此时实现单点登录,就可以设置 cookie 的 domain 字段为同域的字段。比如 a.baidu.comb.baidu.com 设置 cookie 的 domain 为 .baidu.com 即可。

不同域的单点登录

如果是不同域下的网站,需要有一个共同的认证中心只负责登录,如下所示:

image.png

这种方式的单点登录本质是利用重定向的方式,让登录 A 网站的时候种下 A 网站和统一认证中心 C 网站的 cookie。然后访问未登录的 B 网站时,再次访问 统一认证中心 C 网站的时候,浏览器会自动带上 C 网站的 cookie ,C 网站就会验证通过,同时下发验证通过的 ticket。带着 ticket 再次访问 B 网站,B 网站会从 认证中心 C 处验证过 ticket 后认为是已经登录了,并下发 B 网站的 cookie。

登录之后的通信就不再经过认证中心了。

单点注销

同域下的单点注销

同域下的单点登录后,注销的话浏览器会自动清空 cookie ,后端直接设置即可。

不同域下的单点注销

不同域的单点注销的实现方式不同。但是本质都是,在 A 网站注销登录后,重定向到 统一认证中心 C 网站申请注销,注销完成后,统一认证中心 C 网站通知 B 网站等其他网站让其注销登录态。

参考推荐

https://developer.aliyun.com/article/636281