单点登录   <http://www.sojson.com/tag_dddl.html>( SSO  
<http://www.sojson.com/tag_sso.html>)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了 单点登录  
<http://www.sojson.com/tag_dddl.html>的需求和应用领域;从技术本身的角度分析了 单点登录  
<http://www.sojson.com/tag_dddl.html>技术的内部机制和实现手段,并且给出Web- SSO  
<http://www.sojson.com/tag_sso.html>和桌面 SSO  
<http://www.sojson.com/tag_sso.html>
的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对 单点登录  
<http://www.sojson.com/tag_dddl.html>( SSO  
<http://www.sojson.com/tag_sso.html>)的全面分析,还并且讨论了如何将现有的应用和 SSO  
<http://www.sojson.com/tag_sso.html>服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识 单点登录  
<http://www.sojson.com/tag_dddl.html>,从而更好地设计出符合需要的安全架构。

单点登录是什么?


单点登录 (Single Sign On),简称为  SSO   <http://www.sojson.com/tag_sso.html>
,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。所以你会看到很多域名直接是
sso.domain.com,也就是用来做单点登录 的。

如上图,一个用户请求N个系统,给用户的感觉是一个系统的感觉,而不要重复登录。


单点登录 是一个概念性东西,既然是概念,那么就有很多实现方式。

实现方案


根据不同的业务场景来不同的实现方式。下面来罗列一下对应的场景以及实现单点登录 的方式。

一、方案一。

        域名:a.sojson.com 、b.sojson.com、c.sojson.com、n.sojson.com

        描述:N个系统,但是 一级域名   <http://www.sojson.com/tag_yjym.html>是一致的。如果不懂 一级域名  
<http://www.sojson.com/tag_yjym.html>、 二级域名  
<http://www.sojson.com/tag_ejym.html>是什么意思先查看这篇博客。《单个项目多个二级域名简单实现思路
<http://www.sojson.com/blog/76>》。这个案例实现相对简单,如下图:



PS:这个方案比较简单,只要提供公共的 SDK   <http://www.sojson.com/tag_sdk.html>即可,不需要第三个系统的出现,这个
 SDK   <http://www.sojson.com/tag_sdk.html>的工作需要管理 Cookie  
<http://www.sojson.com/tag_cookie.html>和用户信息。

原理:其实质这里就是利用了 二级域名   <http://www.sojson.com/tag_ejym.html>写 一级域名  
<http://www.sojson.com/tag_yjym.html>的 Cookie  
<http://www.sojson.com/tag_cookie.html>。

优点:轻量级、可插拔、效率非常高。

缺点:局限性限于一级域名是一样的。




二、方案二

域名:www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com。

描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

这个稍微复杂一点,如下图:



原理:通过SSO 系统(登录、退出), Iframe   <http://www.sojson.com/tag_iframe.html>引用的方式引入
Cookie.domain.com的方式,利用 Javascript   <http://www.sojson.com/tag_javascript.html>
操作(写入 / 删除 / 修改)  cookie   <http://www.sojson.com/tag_cookie.html>,而这个
cookie.domain.com 域名是放入 CDN   <http://www.sojson.com/tag_cdn.html>上
,获取用户信息当前系统直接通过 Redis   <http://www.sojson.com/tag_redis.html>(只读)获取。

优点:因为是采用压力分化,Cookie.domain.com  部署在CDN上,这样的话,对各个系统造成的压力是 0
,用第三方系统(SSO)维护,权限更大,操作性更强,但又Cookie 信息在当前域名的一级域下,获取简单,大量减少对 sso 
<https://www.sojson.com/tag_sso.html>的访问量。

缺点:如果浏览器安全性过高,Iframe 的方式操作 Cookie  <https://www.sojson.com/tag_cookie.html>
将会失败。比如IE浏览器,目前正在攻克IE浏览器。




三、方案三

域名:www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com。

描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

(条件和方案二一样),实现思路如下图:



原理:所有的请求(登录、退出、获取用户信息、当前用户状态)都请求sso 系统,sso 系统维护用户信息, Session  
<http://www.sojson.com/tag_session.html>,UserInfo。

优点:实现较为简单。

缺点:SSO 压力非常大。




四、方案四

域名:www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com。

描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

(条件和方案二一样),实现采用 CAS   <http://www.sojson.com/tag_cas.html>方式,这里就不做介绍了,资料非常多。

原理:和方案三类似。

优点:现成的,资料较多。

缺点:繁重、灵活性差。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信