单点登录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的解决方案 一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单 ...
随机推荐
- LCA 学习算法 (最近的共同祖先)poj 1330
Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20983 Accept ...
- 使用X264编码yuv格式的视频帧使用ffmpeg解码h264视频帧
前面一篇博客介绍在centos上搭建点击打开链接ffmpeg及x264开发环境.以下就来问个样例: 1.利用x264库将YUV格式视频文件编码为h264格式视频文件 2.利用ffmpeh库将h264格 ...
- VisualStudioOnline协同工作流程
VisualStudioOnline协同工作流程 项目负责人登陆自己的vsonline新建项目就不多说了. 直接从邀请队友开始 项目负责人操作 被邀请的邮箱必须是微软的邮箱(也就是可以登录visual ...
- 改写String类别
主要4默认功能重写: 代码: #include <iostream> using namespace std; class Cstring{ private : char * data; ...
- shuffle一个简单的过程叙述性说明
shuffle它是在map和reduce过程之间.我们看看在这个过程中的步骤,了解在这个问题上不深,有可能是一个错误.忘记修正 1. map map出口key,value,里的context.writ ...
- ASP.NET Core官方资料入口
ASP.NET 5 has been renamed to ASP.NET Core 1.0 传送门
- 当向后台插入或读取JSON数据遇见回车时
今天在项目中发现.当插入或读取JSON数据时遇见回车符.返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决的方法: 在向接口插入带json ...
- 理解git经常使用命令原理
git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...
- Codeforces Round #256 (Div. 2) D. Multiplication Table
主题链接:http://codeforces.com/contest/448/problem/D 思路:用二分法 code: #include<cstdio> #include<cm ...
- Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 3
DDL Setup Steps SQL> grant execute on utl_file to ggs; Grant succeeded. Create GLOBALS file [orac ...