1 定义
单点登录(英语:Single sign-on,缩写为 SSO),一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性;
当拥有该属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录;
所以你会看到很多域名直接是sso.domain.com
,也就是用来做单点登录
的
这项功能通常是以轻型目录访问协议(LDAP)来实现;
在服务器上会将用户信息存储到LDAP数据库中;
相同的,单一退出(single sign-off)就是指,只需要单一的退出动作,就可以结束对于多个系统的访问权限.
如上图,一个用户请求N个系统,给用户的感觉是一个系统的感觉,而不要重复登录.
2 实现
根据不同的业务场景来采取不同的实现方式
2.1 方案一
域名
a.sojson.com 、b.sojson.com、c.sojson.com、n.sojson.com
描述
N个系统,但一级域名一致;
这个案例实现相对简单
该方案比较简单,只要提供公共的SDK 即可,不需要第三个系统的出现,这个[ SDK ]的工作需要管理[Cookie ]和用户信息。
原理
其实质这里就是利用了[ 二级域名 ]写[ 一级域名 ]的[ Cookie ].
优点
轻量级、可插拔、效率非常高
缺点
局限性限于一级域名是一样的
2.2 方案二
域名
www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com
描述
域名较乱,有同一级域名,也有不同域名
原理
通过SSO
系统(登录、退出),[ Iframe ]引用的方式引入Cookie.domain.com
;
利用[Javascript ]操作(写入 / 删除 / 修改) [ cookie ];
而这个cookie.domain.com
域名放入[ CDN ]上 ,获取用户信息当前系统直接通过[ Redis ](只读)获取
优点
采用压力分化,Cookie.domain.com
部署在CDN上;
这样的话,对各个系统造成的压力是 0 ;
用第三方系统(SSO)维护,权限更大,操作性更强;
Cookie
信息在当前域名的一级域下,获取简单,大量减少对[ sso ]的访问量
缺点
如果浏览器安全性过高,Iframe
的方式操作[ Cookie ]将会失败。比如IE
浏览器,目前正在攻克IE
浏览器。
2.3 方案三
域名
www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com
。
描述
域名比较乱,有同一级域名
(www.sojson.com、a.sojson.com
),也有不同域名
(条件和方案二一样),实现思路如下图:
原理
所有的请求(登录、退出、获取用户信息、当前用户状态)都请求sso
系统,sso
系统维护用户信息, Session ,UserInfo
。
优点
实现较为简单
缺点
SSO
压力非常大
2.4 方案四
域名
www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com
。
描述
域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com
),也有不同域名的。
(条件和方案二一样),实现采用[ CAS ]
原理
和方案三类似。
优点
现成的,资料较多。
缺点
繁重、灵活性差。
网友评论