摘要:通过对MicrosoftPassport工程和自由联盟计划的研究,在此基础上把对等概念引入单点登录提出了一个基于信任度的用于Web服务的对等单点登录模型,它满足企业内部应用同时又能适合企业间的应用。
关键词:对等单点登录,信任度模型,Web服务
传统的单点登录解决方案根据应用程序的登录方式可以分为两类:基于脚本(Script)的SSO解决方案与基于访问票据(AccessTicket)的SSO解决方案.目前,主要的两个基于访问票据的SSO标准有微软的WindowsPassport[1]和Sun领导下的Liberty[2].WindowsPassport属于一种集中式单点登录模式,它存在一个明显的缺陷单点失效(SinglePointFailure)[3].并且WindowsPassport在用户信息的共享控制上并不是很细,提供给用户的选择要么向全部的加盟网站共享,要么不向任何一个加盟网站共享,缺乏灵活性.而Liberty协议定义过于狭窄,它仅把精力集中在如何进行单点登录,而并不关心如何结合SSO的用户身份验证与授权机制[4].由于身份登录方式的可靠性差异,在单点登录环境下的授权机制也需要进行相应的调整.
针对上述他们协议的缺陷,本文在其基础上进一步提出了对等单点登录(WebServerbasedPeer-to-peerSingleSignon,简称WS-P2PSSO)模型,此模型能更加适合实际需要。
一、模型的系统结构
在WindowsPassport这种集中式的单点登录模型中,passport.com充当着唯一的信任中介角色,当其管理的团体越来越大时,其可信度和确定性也在不断降低.而在Liberty中虽然提出了一个多重验证的思想,但当IDP(IdentityProvider)提供的认证足够安全并且SP(ServiceProvider)完全信任IDP时,多重验证则显得多余.在WS-P2PSSO模型中,把每个Web站点看作IDP和SP的混合体,并作为对等单点登录的对等点。对于大部分的应用服务,只有在一个SSO-P(ServiceSignOnPeer)上登录就可以访问就可以整个组,组是按一定的规则将相似的一些SSO-P组成在一起的,一个SSO-P可以同属于几个不同的组,但对于核心的服务需在登录核心认证服务器。对于某一些应用服务,我们可以用SSO-P0,SSO-P1,SSO-P2,……。对于整个组,我们用集合S表示。该模型能适用于各种终端,同时又避免所有解决方案都依赖于一个集中的SSO服务器。但又可以使用SSO服务器进行集中管理。模型结构如图1。
在模型的各节点进行认证时引入信任度机制,身份认证可以对多个应用系统进行用户的认证,而这些应用系统可能分属于多个不同的部门。同一用户在不同应用系统中的权限可能不同,这样就要求经过统一认证后,还需要能够灵活处理用户的权限问题,防止不同部门之间的用户未经授权而闯入其他部门的系统中。由于我们各节点间是在连接的时候要进行信任度计算,对于其它部门的如果信任度不能达到访问该部门要求的信任值,从而其它部门也就无法访问到该部门的资源。通过这样处理,可以比较灵活地把用户管理的工作分散到各个部门中去。
图(1)
用户想使用组织S内的服务,具体流程如下:
(1)用户A如果最直接使用的服务假设是SSO-P0,用户可以通过浏览器或者控制台连接到应用服务SSO-P0.
(2)如果A要求的是普通服务,SSO-P0对A进行评价,如果达到要求,就获得SSO-P0的票据。并可以访问A的资源,转(3),如果A访问的是超级服务,转(4)。
(3)SSO-P1,SS-P2,等对SSO-P0进行评价,看A能否达到访问他们的信任度,如果能达到他们要求的最低信任度,就可以访问他们的资源。
(4)将A的请求传到核心统一认证服务器,如果A得到认证,则可以访问组内所有的超级服务。
二、模型涉及的算法
由于用户访问的资源极少的情况是访问超级资源。这样我们可以在大部分情况下把模型进行简化。简化后模型的结构就如图2所示
图(2)
在这个简化的模型中,SSO-P的信任度分成4类:(1)IDP信任度;(2)IDP推荐信任度;(3)S信任度;(4)SP推荐信任度.该4类信任度的值都表示为三元组(b,d,u),其中b代表SSO-P可信任的概率,d代表SSP不可信任的概率,u代表不确定的概率,0≤b,d,u≤1且b+d+u=1.b,d,u采用的是连续值而不是离散值(如:简单地把b的值分为完全信任、普通信任、不信任等有限个数值),是基于各个节点对信任度的不同理解来考虑的.如节点A可能认为b的值大于0.70可以完全信任,而节点B则可能认为b的值必须大于0.95才能完全信任.
在每个SSO-P上同样设有单点登录的最低信任度.作为SP的SSO-P计算作为IDP的SSO-P的IDP信任度,符合要求才能允许单点登录.对于用户的身份经过几个SSO2P传递到最终作为SP的SSO2P的情况见图4.用户A通过SSO-P1来实现SSO-P0与SSO-P2的间接身份联合.在用户A的用户代理上虽然有SSO-P1的验证票据,但该验证票据是根据用户A在SSO-P0上的登录结果而产生的,其可信度比直接由SSO-P1进行验证产生的验证票据低.如果在SSO-P0上的用户认证系统存在严重的安全缺陷,对于SSO-P2来说,接受SSO-P1提供的身份跟直接接SSO-P0提供的身份一样危险.因为系统的安全性取决于系统中最薄弱的环节.这将影响到SSO2-P1作为IDP在SSO-P2上的信任值.为了解决这个问题,我们在Liberty的认证票据上增加一项认证票据的可信度评价(b,d,u).如果认证票据是根据用户在自身节点登录产生,其相应值设为(1,0,0);如果是由其他SSO-P提供的身份产生,则设为作为IDP的SSO-P的IDP信任度.图2中的SSO-P2可以根据自身对SSO-P1的IDP信任度以及SSO-P1在认证票据中设定的信任度,经综合计算后得到认证票据的信任度,其计算规则与信任度传递计算规则一样[5]。
三、分析与对比
WS-P2PSSO与传统集中式的SSO解决方案相比:(1)从技术的角度看,传统的SSO解决方案都依赖于一个集中的SSO服务器,虽有利于用户信息的集中管理,但不可避免地存在单点失效的危险。而WS-P2PSSO因为是分布式的,所以不会存在这些问题。(2)从企业管理的角度看,对于企业内部各个应用的单点登录,可以使用SSO服务器进行集中管理,但是,对于跨企业应用的单点登录,一个企业应用很难要求其他需要单点登录的企业应用都使用同一个SSO服务器。而采用WS-P2PSSO则使企业内部应用的SSO可以像一个集中的SSO服务器,一旦SSO跨越了企业边界,通过WS-P2PSSO也可以实现各个SSO服务器间的SSO。
四、结束语
本文给出的WS-P2PSSO模型通过将对等单点登录引入Web服务单点模型,使得该模型能适用于各种终端,同时又避免所有解决方案都依赖于一个集中的SSO服务器。但又可以使用SSO服务器进行集中管理。但此模型在资源的分类没有细分,没有给出具体的算法,我们将在后面进行进一步完成。
参考文献:
[1]Microsoft.netpassportreviewguide[EB/OL].http://www.microsoft.com/net/services/passport/review-guide.asp,2003-03-13.
[2]LibertyAllianceProject.Libertyarchitectureoverview[EB/OL].http://www.projectliberty.org/specs/liberty/archi/tecture/overview2v1.1.pdf,2003-01-15.
[3]李小平,阎光伟。基于公开密钥基础的单点登录系统的设计。北京理工大学学报,2002;(2)
[4]毛捍东,张维明。一个基于Web服务的单点登录系统。计算机工程与应用。2004.24
[5]YagerRR.Onthedempster-shaferframeworkandnewcombinationrules[J].InformationSciences,2002,41(2):93-137.