单点登录简单原理及实现

作者 : 开心源码 本文共1317个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共183人阅读

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 ]

原理

和方案三相似。

优点

现成的,资料较多。

缺点

繁重、灵活性差。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 单点登录简单原理及实现

发表回复