单一登录
SSO,单一登录(single sign-on),意思是指在多套系统并存的环境下,用户只需登录一次即可访问其他授权的系统。
提起SSO(单一登录),大概企业里的IT人员无人不知,但真正意识到其复杂度的,未必有多少,只有亲身实施过的技术人员,也许才明白个中玄妙。本文基于蓝凌为国内几十家大中型企业的服务案例,针对SSO的相关技术和案例进行一些探讨,希望能帮助到企业IT人员更深刻理解SSO技术及其应用。
一、企业级SSO
SSO涉及的领域大致上可以分为三种:社会性网站间的SSO、部门SSO、企业级SSO。
社会性网站间的SSO主要涉及的帐号信息开放性问题,能否实施成功主要取决于各大网站帐号管理是否遵循相同的标准协议,如Openid、Passport等。
部门级SSO比较简单,一般涉及的系统不多,由技术人员通过编程方式实现即可,但一旦牵涉系统众多,安全性要求高的情况,就不适用了。
企业级SSO是三者中最复杂的领域,因涉及的系统可能五花八门,这些系统也许是老旧的C/S结构系统、可能是某种大型软件系统(如SAP),还可能是某种非web登录方式(如windows域登录);其安全性要求也远比前两者高,如要求同享登录有效时间等,因此企业级SSO在技术难度上是最高的,但也因此是IT人员最愿意钻研的领域。而绝大部分国内企业,其内部系统常常因为历史原因导致多套系统缺乏统一规划,缺乏标准而导致整合代价高昂。因此SSO也是许多大中型企业IT部门比较头疼的事情。
本文主要讨论的领域,就是企业级SSO。
二、深入企业级SSO
SSO是一把双刃剑:SSO可以简化用户登录过程,提升用户的登录体验;同时可以降低IT管理员大量账户和密码维护成本;SSO还提供了符合萨班斯法案的密码集中管理工具;但SSO同时也产生了一种安全风险,某一系统用户身份一旦被攻破,则意味着所有参与SSO网络的应用系统也被穿透。因此需要慎重考虑SSO的范围及安全级别的局限性。
SSO涉及不同层面的需求:SSO的实质是多套系统能否识别同一用户的身份,并在各套系统间实时同步用户身份信息,以支持各套系统进行用户权限控制。基于这样的原因,一套SSO技术至少应该考虑一下四个层面的需求:
1、 单点登录,多点即可同时登录;
2、 单点注销(退出登录),多点即可同时注销;
3、 单点切换用户,多点即可同时切换;
4、 单点登录过期,多点同时过期。
如下图:
现实环境中,一个最佳的SSO环境(整合代价最小)应该是:
1、一个用户在不同系统只有一个共同登录名和密码
2、各套应用系统共享一套用户名和密码信息
3、应用系统采用相同的技术架构且域名后缀相同
![](http://www.landray.com.cn/uploads/sso/sso2.jpg)
而一个最坏的SSO环境(整合代价最大)会体现为:
1、一个用户在不同系统有不同的登录名和密码
2、不同的应用系统各自存储了独立的用户名和密码
3、 应用系统采用不同的技术架构且域名后缀不同,甚至只有IP而无域名。
![](http://www.landray.com.cn/uploads/sso/sso3.jpg)
从我们的实操经验来看,能够提供最佳SSO环境的企业,在国内几乎凤毛麟角,这样的企业必须是非常具有IT战略眼光且IT系统选型非常精准,企业历任IT领导间保持了高度的传承共识、IT规划细致到位才可能做到;而最坏或接近最坏的SSO环境却比比皆是。
幸运的是,即便是最坏的SSO环境,也还是有相应的技术解决方案来支持整合的。
三、SSO的两种架构与三种实现技术
从应用架构层面,SSO主要可以分为集中验证模式和多点验证模式两种不同的架构。
![](http://www.landray.com.cn/uploads/sso/sso4.jpg)
相对与多点验证模式来说,集中验证模式的适用范围更广,而且在SSO服务器中使用的是统一的用户名密码,用户无需关注登录的是哪套系统的账套,所以用户体验更加优秀。由于所有的登录都放在了统一的服务器,所以当集中验证服务器宕机时,所有系统无法正常登录,或丢失SSO的功能,建议以独立服务器作为集中验证服务器,并需要保证登录服务器的稳定性。
在多点验证模式的模式下,所有的登录操作都在应用系统完成,任何一套系统宕机不会对其它系统产生影响,也不会影响正常运行系统间的SSO。但若各套系统的账套不一样的时候,若要用户区分每套系统的用户密码,必定会降低用户的体验,为了解决该问题,多点登录模式最好有统一的用户密码验证的服务(如LDAP身份验证)。另外,多点登录模式相对集中验证模式来说会存在更多的技术限制,详见后面的章节。
从SSO在技术实现的角度,SSO的实现通常有以下三种技术实现途径:代理登录(agent)、令牌环(token)、身份票据(ticket)。
![](http://www.landray.com.cn/uploads/sso/sso6.jpg)
代理登录的优点就是无需对原有系统做任何改造,适用于无法改造的旧系统;
其缺点很明显:
1、稳定性差,一旦登录期间某台服务器无法响应,则该服务器无法单点登录。
2、安全性差,用户名密码通过明文传输。
3、由于登录期间需要监控各个系统的响应,所以不建议大量使用,否则会影响登录的性能。
4、由于IE的安全限制,代理登录必须在同域的情况下运行。
令牌环的方式最大好处在于无需统一的验证服务器,是“多点验证模式”的主力实现技术,各个服务器都通过统一的密钥对令牌进行加密解密,所以该方式具有安全性高、稳定性好、性能消耗低等优点;其缺点就是必须保证各台应用服务器同域。
![](http://www.landray.com.cn/uploads/sso/sso8.jpg)
身份票据的方式,是适用范围最广的一种SSO实现方式,可以解决跨域等问题,安全性高、稳定性好;其缺点就是必须增加一台验证服务器,保证在高压下验证服务器的稳定运行,性能方面由于每次登录都需要访问验证服务器,所以比令牌环的方式略差一点。
三种技术实现途径的比较
比较项 |
代理登录 |
令牌环 |
身份票据 |
需求实现程度 |
无法实现同时切换用户与会话同时过期 |
全部 |
全部 |
对原系统改造 |
无 |
小量改造 |
小量改造 |
安全性 |
低 |
高 |
高 |
稳定性 |
偏低 |
好 |
好 |
性能开销 |
登录瞬间压力大一点 |
非常小 |
较小 |
适用范围 |
同域,对用户密码不一致的系统,需在登录服务器的用户凭证库保存用户密码映射 |
同域,对不同登录名需增加对用户凭证库的访问 |
所有可改造的系统,对不同登录名需在登录服务器的用户凭证库保存用户映射 |
独立验证服务器 |
需要 |
不需要 |
需要 |
登录模式支持 |
集中验证模式 |
集中验证模式/多点验证模式 |
集中验证模式 |
四、 蓝凌EKP 产品SSO解决方案
从蓝凌实施过的数十个SSO整合案例得到的经验来看,单一的SSO技术和架构不可能彻底解决所有SSO问题,蓝凌EKP产品提供的SSO解决方案中,提供了混合实现途径,可以根据客户的实际情况进行灵活地组合,并提供足够的扩展接口。EKP SSO组件包含一个服务器和多个内置客户端产品包:
EKP SSO Server:基于CAS内核,并在上面增加了许多扩展,具有简单易用(通过配置完成大部分SSO需求)、扩展性强、应用范围广、安全、稳定等特点。
1、支持多种账户存储方式
2、支持一个用户多套帐号密码
3、支持前述三种主要身份认证技术
4、支持灵活扩展
EKP SSO Client:客户端组件是为了减少各应用系统的改造工作量设计的,针对不同的开发语言有不同客户端提供调用。
EKP的系列产品(EKP-D、EKP-N、EKP-J、EKP-Portal)已经内置了EKP SSO Client
客户端的支持:
![](http://www.landray.com.cn/uploads/sso/sso10.jpg)
在本SSO方案中,整合了IBM Websphere Portal、蓝凌Domino和Java系列的产品、Coremail以及内部的所有应用系统的SSO。采用了IBM的TDS作为目录服务,进行用户名密码的验证;使用了蓝凌的UIM系统,对用户进行维护,映射各套应用系统之间的用户凭证;通过蓝凌的SSO服务器,简化了所有系统的登录验证操作;大部分的客户端与SSO服务器之间采用了性能消耗最小的令牌环技术进行用户身份的传递。
六、建议
好的SSO规划可以帮助企业以最小的整合代价、最佳的维护成本获得最优的用户登录体验。
在蓝凌所实施的项目中,规划和整合通常都是一体实施的。即通过帮助客户进行典型系统的SSO整合,同时基于企业特点帮助客户制订一套可适应未来的SSO规范,这样的动作,通常会包括在企业门户整合项目或IT规划项目中,作为一个关键组成部分进行实施。
我们期待有更多的企业提早认识到企业SSO规划的重要性