场景

单应用不存在使用单点登录的场景
常见于多应用之间(微前端、不同主体的合作关系使得不同应用之间跳转的场景)

实现

还要考虑注销用户的场景

方法一:利用cookie的域实现

由于cookie是有限制域的,所以相同域之下的应用才可以利用cookie实现单点登录。
浏览器发送http请求时会去匹配,当请求的地址和cookie的域相匹配时,就会把这个cookie携带,不匹配就不携带。
比如A系统域名:www.myapp.A,B系统域名www.myapp.B,设置cookie的域为www.myapp,那么访问A,B系统时都会携带这个cookie,也就实现了单点登录。
优点: 简单方便,
缺点: 就是不够动态,首先域名要统一,其次,web服务器还得统一,tomcat是JSESSION,php,.net服务器就不是JSESSON了。

方法二:增加业务应用实现

有两个系统要做单点登录(系统A,B),我们可以不用cookie来实现单点,增加一个系统注册应用(系统C)。把系统A,B的功能模块全部注册到系统C中,同时关联账号,系统C的 user1 关联系统A的 userA1,关联系统B的 userB1,同时登录的入口唯一,即只开放系统C的登录。
比如我们user1登录了系统C,同时要访问系统A的某个模块,我们就可以跳转到系统A,同时在系统A中创建userA1的session,要访问系统B的某个模块,我们就可以跳转到系统B,同时在系统B中创建userB1的session,这样也可以实现单点。优点就是比较适合后台管理类,权限多的应用。缺点就是相对复杂。如下图:
SSO - 图1

方法三、通过认证中心实现

认证中心SSO
https://www.cnblogs.com/ywlaker/p/6113927.html#!comments