SSO方案中太多平行对称的分支选择,就像博而赫斯那小径分岔的花园。刚手写完一个超迷你劲袖珍的SSO,顺着 SAML2.0和OpenID的规范,记录一下这些分岔点:
-
流程是从身份提供者还是消费者发起?
身份提供者,也就是SSO Server了,又叫Id Provider,简称Idp。而身份消费者,SSO Client,在SAML里叫做Sp。
身份提供者发起流程中,用户登录进SSO Server,SSO Server展现一个Portal/菜单,上有到各SSO Client的URL若干,每个URL上都已经加了身份信息的料。
身份消费者发起流程中,Portal/菜单里是无料的普通URL(甚至用户直接就先跑去了Client的网站),SSO
Client发现本地Session里没有用户的身份信息,只好redirect重返SSO Server,最后Server再以有料的URL跳转回去。
显然,前一种流程少了两次Redirect,速度更快,但Portal/菜单中的每个URL都深深的耦合着SSO Sever,又或者,有时根本就没有这么一个中央Portal的存在。
-
URL参数中传送身份信息还是仅仅是指针
?
SSO Server 向
Client跳转时,可以大大方方的把身份信息放在URL参数里直接传输,也可以小心翼翼的只扔过来一个随机字符串(SAML中叫
Artifact),Client拿着这个随机字串再到后台偷偷摸摸用WebService/REST接口问SSO Server拿到完整的身份信息。
显然,前一种方式少了一次后台查询,速度更快,但没有后一种方式安全,后一种方式的WebService/REST接口还可传输任意格式的很多很多的信息。
-
安全措施是全文加密还是仅仅签名
?
有人喜欢全文(再加一个nonce
)加密成长长一段密文,心中充满了安全感。也有人大胆的明文传输内容,只在最后加个签名来防伪(签名用简单的明文+密钥散列,或者HMAC加密散列算法)
前者用户只看到长长一段火星文,不会让用户偷窥到什么,但字串暴长且加解密本身比较消耗CPU。
-
SSO Client会自己解密/比对签名吗?
一般,SSO Client会根据约定自己解密或根据明文生成签名进行比对,还要负责验证那个nonce不会已被使用或者已经超时等等。
但也会可以有很懒的client,不懂这么复杂的安全加密算法,直接把收到的内容在后台用WebService/Rest接口发回给SSO Server帮忙搞定。
刚刚手写那个SSO,身份提供者发起流程,在URL参数中传输加密的身份信息,由SSO Client自行解密,so,超简单...
安民告示:
由于晓钢的服务器出了点故障,SpringSide的主页和Wiki暂时不能访问,而以下部分是完好的:
- 论坛:http://forum.springside.org.cn
- 源码:http://springside.googlecode.com/svn/springside3/trunk/
- 下载:http://www.sf.net/projects/springside
分享到:
相关推荐
spring boot整合spring security 实现SSO单点登陆 完整DEMO. ...2、先后启动SsoServer、sso-resource、sso-client1、sso-client2 3、访问http://sso-taobao:8083/client1/ 或 http://sso-tmall:8084/client2/
SSO的简单实现SSO的简单实现SSO的简单实现
sso单点登录sso单点登录sso单点登录sso单点登录
Loong SSO(单点登录)开源代码正式发布 rc1.0 Loong SSO是一款用C 写的 SSO服务端,可以运行在 linux(2.6内核) 和 FreeBSD系统上,使用HTTP协议 进行交互. 这款SSO产品,在运行机制上 吸取了国内门户的 passport一些...
一个实现SSO方案的构想SSO单点登陆解决方案
3) 如果验证通过,则从映射表中取出该用户所有能访问的应用系统,显示在sso登录成功页面。转向登录成功页面之前,将该用户所有能访问应用系统的实际用户名都放到cookie中(从映射表中获得)。也就是说,该用户能...
Laravel开发-sso Laravel 4的SSO包。
SSO开源项目,基于https的,大家可以在网上搜索研究一下!
自己动手写sso java 简单实现 使用 目前流行的 springboot 做基础
sso各子系统在集成sso后可通过sso client 端提供的一下接口获取sso数据
同父域sso单点登录源码SSO_SameFather
sso单点登录ppt.ppt
详细描述了SSO的解决方案,让您初步认识到SSO的方案设计
注:图中代码段仅作为思路理解 直接copy当然是不可以的喔">关于SSO的思路 csdn和cnblog中都有许多大牛给出了解释 此图是在学习了 韩星 的 基于 Net的单点登录 SSO 解决方案 基础上做的个人总结(顺序图) 小弟初探 ...
.net简单sso登录demo
SSO Agent 负责管理操作员的登录/退出流程,操作员在应用中的SSO 的Session管理,并具SSO Agent 负责收接应用发送过的操作员登录,退出等信息交给应用进行处理。这种方式对应用接入的开发来说,优点是开发工作量比较...
sso_introduction.pdf sso_introduction.pdf
SSO概述
SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一
SSO单点登录