单点登录SSO原则的实现
单点登录SSO(Single Sign On)简单地把它是下一个在多系统环境中共存,在用户登录,不要在其他系统上的登录。这是用户第一次登录得到所有其他系统的信任。
单点登录在一个大型网站非常频繁使用,例如,网站,如阿里巴巴,该网站的背后,是数百子系统。或交易可能涉及到几十个子系统的协作。假设每一个子系统都须要用户认证。不仅用户会疯掉,各子系统也会为这种反复认证授权的逻辑搞疯掉。
实现单点登录说究竟就是要解决怎样产生和存储那个信任。再就是其它系统怎样验证这个信任的有效性,因此要点也就下面几个:
- 存储信任
- 验证信任
仅仅要攻克了以上的问题。达到了开头讲得效果就能够说是SSO。
最简单实现SSO的方法就是用Cookie,实现流程例如以下所看到的:

不然发现以上的方案是把信任存储在client的Cookie里。这样的方法尽管实现方便但立刻会让人质疑两个问题:
- Cookie不安全
- 不能跨域免登
对于第一个问题一般都是通过加密Cookie来处理。第二个问题是硬伤。事实上这样的方案的思路的就是要把这个信任关系存储在client,要实现这个也不一定仅仅能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。
一般说来。大型系统会採取在服务端存储信任关系的做法,实现流程例如以下所看到的:

以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里。说起来仅仅是简单地从client移到了服务端,但当中几个问题须要重点解决:
- 怎样高效存储大量暂时性的信任数据
- 怎样防止信息传递过程被篡改
- 怎样让SSO系统信任登录系统和免登系统
对于第一个问题,一般能够採用相似与memcached的分布式缓存的方案。既能提供可扩展数据量的机制。也能提供高效訪问。
对于第二个问题,一般採取数字签名的方法,要么通过数字证书签名。要么通过像md5的方式,这就须要SSO系统返回免登URL的时候对需验证的參数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候。需把这个token传给SSO系统,SSO系统通过对token的验证就能够辨别信息是否翻。
对于最后一个问题,可以通过白名单进行处理,对信托制度竞争力白名单要求简单点只有富有成效的关系,在白名单中唯一的类似系统的能力是免费登录。
这些都只是一些简单的实现提供技术,但需要强调的是,这仅仅是技术实现的,只解决部分上述问题的。SSO本身并不是一个高科技,有了这样的认识更加有利于我们深入探索SSO
单点登录SSO原则的实现的更多相关文章
- Atitit. 单点登录sso 的解决方案 总结
Atitit. 单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说,开发快速简单为主 2 2. ...
- 单点登录(一)-----理论-----单点登录SSO的介绍和CAS+选型
什么是单点登录(SSO) 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 单点登录(Single Sign On),简称为 ...
- cas单点登录 SSO 的实现原理
原文出处: cutesource 欢迎分享原创到伯乐头条 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户 ...
- 单点登录 SSO 的实现原理
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任. 单点登录在大型网站里使用 ...
- 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...
- 单点登录SSO的实现原理
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...
- 单点登录SSO原理
最近接触了一点单点登录的知识,有一点理解,记录一下.有些问题并没有找到完美的解决方法,还需要找点已有框架来看看. 欢迎留言探讨. 1 概念 1.1 概念及理解 有一个网上广为流传的 ...
- CAS单点登录(SSO)完整教程
转:http://blog.csdn.net/frinder/article/details/7969925 CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的 ...
- Redis缓存实现单点登录SSO
.NET基于Redis缓存实现单点登录SSO的解决方案 .NET基于Redis缓存实现单点登录SSO的解决方案 一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单 ...
随机推荐
- Caching-缓存架构与源码分析
Caching-缓存架构与源码分析 首先奉献caching的开源地址[微软源码] 1.工程架构 为了提高程序效率,我们经常将一些不频繁修改,但是使用了还很大的数据进行缓存.尤其是互联网产品,缓存可以说 ...
- linux kernel 结构体赋值方法{转载}
原文地址: http://www.chineselinuxuniversity.net/articles/48226.shtml 这几天看Linux的内核源码,突然看到init_pid_ns这个结构体 ...
- Swing-email(转)
项目结构: 运行效果: 如果你感兴趣,请不要那我的邮箱做测试!!!! ========================================================== 下面是代码部 ...
- QEMU-KVM自己主动创建虚拟机,以指定IP构造
正在使用qemu不能指定创建虚拟机的过程IP住址,然而,在实际应用中,我们需要有一台虚拟机IP住址,不是人为的虚拟机操作系统配置. 于qemu虚拟机技术文档(http://qemu.weilnetz. ...
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
- IntelliJ IDEA15开发时设置中java complier 的问题
Error:java: Compilation failed: internal java compiler error set中java complier 设置的问题 ,项目中有人用jdk1.6 ...
- ASP.NET5
ASP.NET5 2015年11月30日, ASP.NET 5 RC1 已经发布,本文尝试了一下ASP.NET5项目的创见一发布到IIS.开发环境,win10 64位,visual studio201 ...
- 合理设置MTU,提升下载速度
可能很少有雷友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...
- Android开发学习总结(五)——Android应用目录结构分析(转)
一.手动创建android项目 手动创建一个Android项目,命名为HelloWorld,命令如下: android create project -n HelloWorld -t 1 -p E:/ ...
- MEF初体验之二:定义组合部件和契约
组合部件 在MEF中,一个组合部件就是一个组合单元,组合部件"出口"其它组合部件需要的服务并且从其它部件"进口"需要的服务.在MEF编程模型中,为了声明组合部件 ...