首页  ·  知识 ·  
探秘企业级SSO
没有想法 叶中奇      编辑:dezai   图片来源:网络
SSO涉及的领域大致上可以分为三种:社会性网站间的SSO、部门级SSO、企业级SSO。企业级SSO是三者中最复杂的领域, 从技术架构层面,SSO主要可以分为集中

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、应用系统采用相同的技术架构且域名后缀相同

 

而一个最坏的SSO环境(整合代价最大)会体现为:


1、一个用户在不同系统有不同的登录名和密码


2、不同的应用系统各自存储了独立的用户名和密码


3、   应用系统采用不同的技术架构且域名后缀不同,甚至只有IP而无域名。

 

从我们的实操经验来看,能够提供最佳SSO环境的企业,在国内几乎凤毛麟角,这样的企业必须是非常具有IT战略眼光且IT系统选型非常精准,企业历任IT领导间保持了高度的传承共识、IT规划细致到位才可能做到;而最坏或接近最坏的SSO环境却比比皆是。
幸运的是,即便是最坏的SSO环境,也还是有相应的技术解决方案来支持整合的。

三、SSO的两种架构与三种实现技术


从应用架构层面,SSO主要可以分为集中验证模式和多点验证模式两种不同的架构。


集中验证模式:当应用系统需要登录时,统一交由验证服务器完成登录动作,应用系统不提供登录接入(如登录界面)。

 

相对与多点验证模式来说,集中验证模式的适用范围更广,而且在SSO服务器中使用的是统一的用户名密码,用户无需关注登录的是哪套系统的账套,所以用户体验更加优秀。由于所有的登录都放在了统一的服务器,所以当集中验证服务器宕机时,所有系统无法正常登录,或丢失SSO的功能,建议以独立服务器作为集中验证服务器,并需要保证登录服务器的稳定性。

多点验证模式:应用系统供各自的登录界面,登录了一套系统后,另外其他系统无需再次登录即可通过身份验证。

 

在多点验证模式的模式下,所有的登录操作都在应用系统完成,任何一套系统宕机不会对其它系统产生影响,也不会影响正常运行系统间的SSO。但若各套系统的账套不一样的时候,若要用户区分每套系统的用户密码,必定会降低用户的体验,为了解决该问题,多点登录模式最好有统一的用户密码验证的服务(如LDAP身份验证)。另外,多点登录模式相对集中验证模式来说会存在更多的技术限制,详见后面的章节。

从SSO在技术实现的角度,SSO的实现通常有以下三种技术实现途径:代理登录(agent)、令牌环(token)、身份票据(ticket)。


代理登录(agent):代理登录的原理就是在IE端通过表单提交的方式模拟应用系统的登录操作,实现SSO。

代理登录的优点就是无需对原有系统做任何改造,适用于无法改造的旧系统;


其缺点很明显:


1、稳定性差,一旦登录期间某台服务器无法响应,则该服务器无法单点登录。


2、安全性差,用户名密码通过明文传输。


3、由于登录期间需要监控各个系统的响应,所以不建议大量使用,否则会影响登录的性能。


4、由于IE的安全限制,代理登录必须在同域的情况下运行。

令牌环(token):通过Cookie中共享令牌环的方式传递当前用户信息,实现SSO。(令牌环类似IBM的LTPA Token,IBM系列产品间能实现配置式SSO,就依靠此技术。如IBM  Websphere Portal Server与Lotus Domino Server之间的SSO)

 

令牌环的方式最大好处在于无需统一的验证服务器,是“多点验证模式”的主力实现技术,各个服务器都通过统一的密钥对令牌进行加密解密,所以该方式具有安全性高、稳定性好、性能消耗低等优点;其缺点就是必须保证各台应用服务器同域。

身份票据(ticket):与令牌环不一样,身份票据是通过URL的方式传递,通过“两次握手”的方式,实现SSO。(如开源的CAS就是这种原理)

 

身份票据的方式,是适用范围最广的一种SSO实现方式,可以解决跨域等问题,安全性高、稳定性好;其缺点就是必须增加一台验证服务器,保证在高压下验证服务器的稳定运行,性能方面由于每次登录都需要访问验证服务器,所以比令牌环的方式略差一点。

三种技术实现途径的比较

 

来源:http://blog.sina.com.cn/s/blog_737b50360101dlmz.html

 

本文作者:没有想法 叶中奇 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读