单点登录SSO原则的实现
2015-06-22 10:57
246 查看
单点登录SSO(Single Sign On)简单地把它是下一个在多系统环境中共存,在用户登录,不要在其他系统上的登录。这是用户第一次登录得到所有其他系统的信任。
单点登录在一个大型网站非常频繁使用,例如,网站,如阿里巴巴,该网站的背后,是数百子系统。或交易可能涉及到几十个子系统的协作。假设每一个子系统都须要用户认证。不仅用户会疯掉,各子系统也会为这种反复认证授权的逻辑搞疯掉。
实现单点登录说究竟就是要解决怎样产生和存储那个信任。再就是其它系统怎样验证这个信任的有效性,因此要点也就下面几个:
存储信任
验证信任
仅仅要攻克了以上的问题。达到了开头讲得效果就能够说是SSO。
最简单实现SSO的方法就是用Cookie,实现流程例如以下所看到的:
![](http://hi.csdn.net/attachment/201008/25/0_1282741192WFWf.gif)
不然发现以上的方案是把信任存储在client的Cookie里。这样的方法尽管实现方便但立刻会让人质疑两个问题:
Cookie不安全
不能跨域免登
对于第一个问题一般都是通过加密Cookie来处理。第二个问题是硬伤。事实上这样的方案的思路的就是要把这个信任关系存储在client,要实现这个也不一定仅仅能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。
一般说来。大型系统会採取在服务端存储信任关系的做法,实现流程例如以下所看到的:
![](http://hi.csdn.net/attachment/201008/25/0_1282743848CzZV.gif)
以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里。说起来仅仅是简单地从client移到了服务端,但当中几个问题须要重点解决:
怎样高效存储大量暂时性的信任数据
怎样防止信息传递过程被篡改
怎样让SSO系统信任登录系统和免登系统
对于第一个问题,一般能够採用相似与memcached的分布式缓存的方案。既能提供可扩展数据量的机制。也能提供高效訪问。
对于第二个问题,一般採取数字签名的方法,要么通过数字证书签名。要么通过像md5的方式,这就须要SSO系统返回免登URL的时候对需验证的參数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候。需把这个token传给SSO系统,SSO系统通过对token的验证就能够辨别信息是否翻。
对于最后一个问题,可以通过白名单进行处理,对信托制度竞争力白名单要求简单点只有富有成效的关系,在白名单中唯一的类似系统的能力是免费登录。
这些都只是一些简单的实现提供技术,但需要强调的是,这仅仅是技术实现的,只解决部分上述问题的。SSO本身并不是一个高科技,有了这样的认识更加有利于我们深入探索SSO
单点登录在一个大型网站非常频繁使用,例如,网站,如阿里巴巴,该网站的背后,是数百子系统。或交易可能涉及到几十个子系统的协作。假设每一个子系统都须要用户认证。不仅用户会疯掉,各子系统也会为这种反复认证授权的逻辑搞疯掉。
实现单点登录说究竟就是要解决怎样产生和存储那个信任。再就是其它系统怎样验证这个信任的有效性,因此要点也就下面几个:
存储信任
验证信任
仅仅要攻克了以上的问题。达到了开头讲得效果就能够说是SSO。
最简单实现SSO的方法就是用Cookie,实现流程例如以下所看到的:
![](http://hi.csdn.net/attachment/201008/25/0_1282741192WFWf.gif)
不然发现以上的方案是把信任存储在client的Cookie里。这样的方法尽管实现方便但立刻会让人质疑两个问题:
Cookie不安全
不能跨域免登
对于第一个问题一般都是通过加密Cookie来处理。第二个问题是硬伤。事实上这样的方案的思路的就是要把这个信任关系存储在client,要实现这个也不一定仅仅能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。
一般说来。大型系统会採取在服务端存储信任关系的做法,实现流程例如以下所看到的:
![](http://hi.csdn.net/attachment/201008/25/0_1282743848CzZV.gif)
以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里。说起来仅仅是简单地从client移到了服务端,但当中几个问题须要重点解决:
怎样高效存储大量暂时性的信任数据
怎样防止信息传递过程被篡改
怎样让SSO系统信任登录系统和免登系统
对于第一个问题,一般能够採用相似与memcached的分布式缓存的方案。既能提供可扩展数据量的机制。也能提供高效訪问。
对于第二个问题,一般採取数字签名的方法,要么通过数字证书签名。要么通过像md5的方式,这就须要SSO系统返回免登URL的时候对需验证的參数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候。需把这个token传给SSO系统,SSO系统通过对token的验证就能够辨别信息是否翻。
对于最后一个问题,可以通过白名单进行处理,对信托制度竞争力白名单要求简单点只有富有成效的关系,在白名单中唯一的类似系统的能力是免费登录。
这些都只是一些简单的实现提供技术,但需要强调的是,这仅仅是技术实现的,只解决部分上述问题的。SSO本身并不是一个高科技,有了这样的认识更加有利于我们深入探索SSO
相关文章推荐
- bootstrap3 标题文字类型
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-4 Source code
- SuspendLayout()了解方法
- Win10预览版10147 32位英文ISO镜像及语言包下载
- Lua 中 table 库函数 table.concat 连接 函数
- 一个递归+二分法的洗牌程序
- hog haar DaVinci dsp realtime 实时 移植 图像识别 机器学习 开发板
- ArcGIS 10 安装步骤说明
- Wamp安装配置
- Majority Element
- android imageloader
- Swift 编程语言新手教程
- zabbix-agent 安装
- oracle 和mysql触发器的编写有什么不同。
- groovy找到数组里的重复元素的下标
- Clean Code 读书笔记六
- 灵活使用segue导航
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-3 Source code
- Uva - 12627 - Erratic Expansion
- Uva - 12627 - Erratic Expansion