单点登录技术:微软Passport单点登录协议和自由联盟规范(2)

http://www.itjxue.com  2015-08-07 21:06  来源:未知  点击次数: 

4.2 自由联盟规范

自由联盟于美国当地时间2003年3月11日公布了单点登录架构“Liberty Alliance Federated Network Identity Architecture”的概要及其发展蓝图。自由联盟声称利用该架构能够解决众多阻碍Web认证服务的技术性障碍。

自由联盟分两个阶段公布支持该架构的规范――自由联盟规范。在第一阶段,自由联盟于2002年7月公布了作为联盟用户管理基础的规格集“Liberty Alliance Identity Federation Framework(ID-FF,自由联盟统一联合框架)”,并于2003年1月进行了修订。ID-FF支持将已经具有关系的多用户信息进行联合或链接,使用户一次登录即可享受多家企业提供的服务。在第二阶段,自由联盟在2003年内强化ID-FF,并发表了“Identity Web Services Framework(ID-WSF,统一Web服务框架)”。ID-WSF公布了构筑基于相互认证的Web服务所需关键技术的概要。自由联盟认为这种Web服务符合特定的工作目的,在共享用户信息方面,保护个人隐私和系统安全。另外,自由联盟还将提供基于ID-WSF的规格集“Liberty Alliance Identity Services Interface Specifications(ID-SIS,自由联盟统一服务接口规范)”。这样,企业就可以使用标准方法提供特征登记/联系地址/日历/位置信息和报警服务等[3]。

4.3 自由联盟具体协议

在自由联盟规范中定义了四个具体的协议[2]:

1、单点登录以及身份联合

2、名字注册

3、身份联合终止声明

4、单点退出

与微软Passport相同,自由联盟具体协议也具有三个主体,它们分别是:

1、主体(Principals),(类同微软Passport中的用户)

2、服务提供者(Service Providers)

3、身份提供者(Identity Providers)

其中服务提供者类同于微软Passport中的服务提供者,均是指为用户提供某种服务的网站。自由联盟中的身份提供者是一种特殊的服务提供者,它为其他的主体提供身份认证、主体信息访问控制等服务,虽然它的作用等同于微软Passport中的Passport登录服务器,但不同之处在于自由联盟中的身份提供者并不是唯一的,而可以是多个且相互独立存在的,这点是与微软Passport的中央统筹式的单一登录服务有着根本区别的。

下面我们进一步讨论一下自由联盟具体协议中的单点登录以及身份联合。单点登录以及身份联合是自由联盟具体协议中最复杂的协议。该协议在很大程度上依赖于安全声明标记语言(SAML)。首先让我们了解一下SAML。SAML并不是一项新技术。确切地说,它是一种语言,进行单一的XML描述,允许不同安全系统产生的信息进行交换。SAML在标准行业传输协议环境里工作,例如HTTP、SMTP和FTP;同时也服务于各种各样的XML文件交换框架,如:SOAP和BizTalk。SAML具备的一个最突出的好处,是使用户能够通过因特网进行安全证书移动。SAML的工作原理如下[5]:

1、用户向认证机构提交证书。

2、认证机构对用户的证书进行断言,并且产生一个认证声明以及一个或更多的属性声明(如用户的资料信息)。此时用户立即就会得到由SAML断言的认证和识别标志。

3、用户使用这个SAML标志(认证声明)尝试访问一个受保护的资源。

4、用户对保护资源的访问请求被PEP(Policy Enforcement Point)截取,同时用户的SAML标志(认证声明)被PEP提交给属性管理。

5、属性管理或PDP(Policy Decision Point)基于自身的政策标准产生一个决定。如果批准用户对该保护资源进行访问,就会产生一个附加在SAML标志(认证声明)上的属性声明。用户的SAML标志(认证声明)就能够以单点登录方式呈现给信任的商业伙伴。

下面简单介绍一下自由联盟单点登录协议的流程,其流程同微软Passport单点登录协议流程大致相同,不同之处是:在自由联盟中身份提供者并不是通过重定向消息来将认证消息传递给服务提供者的,而是通过SAML与服务提供者交互来完成的。具体流程可参考图3。

4.4 自由联盟规范小结

与微软Passport不同,自由联盟规范依据了OASIS产业标准,它不是中央统筹式的单一登录模式,而是一种相对公允的模式,在其信任圈中可以存在多个独立的身份提供者。但目前自由联盟规范仍处于研究阶段,并且其本身的高复杂性导致目前还没有像微软Passport服务那样有成型的应用服务。

以个人域名作为身份标识的单点登录系统

下面介绍的是笔者接合对微软Passport以及自由联盟单点登录协议的研究,设计开发的一个以个人域名作为身份标识的单点登录系统。该系统开发环境为:操作系统Linux 9 、脚本语言PHP5、数据库mysql 。

本系统由三部分组成:(a)IDP服务器(个人域名认证服务器) (b)SP1服务器(服务提供者1) (c)SP2服务器(服务提供者2)。其中IDP相当于Passport中的登录服务器,作用是验证用户身份,SP1、SP2为模拟的两个服务提供者。

从上文中我们可以了解到,微软Passport以及自由联盟为确保其单点登录系统中登录账户的唯一性、可信性,都设置了专门的身份认证服务器。而在笔者设计的单点登录系统中直接采用个人域名来作为身份标识,即通过个人域名认证服务器来确保登录账户的唯一性、可信性。众所周知,域名类似于互联网上的门牌号码,是用于识别和定位互联网上计算机的层次结构式字符标识,与该计算机的互联网协议(IP)地址相对应。同样,面向个人开放的个人域名好比是互联网上的身份证,也具有唯一性、权威性的特征。因而将个人域名作为单点登录系统中的登录账户,不仅能够确保单点登录系统中身份的可信性,还能减少单点登录系统的开发成本,从而有利于单点登录系统的推广。

本系统单点登录流程如下:用户在IDP可以注册个人域名作为登录账户,用作单点登录时的口令。用户在IDP可以直接进行全局登录,在SP1、SP2也可通过超链接到IDP的登录页面进行全局登录。在用户全局登录后,IDP在用户浏览器中设置cookie,cookie中存入已加密的信息,该信息用于表明用户已全局登录。全局登录后,当用户访问某一SP时,该SP自动将浏览器重定向到IDP,询问IDP该用户是否已全局登录,此时IDP检查用户浏览器中的cookie来判断用户是否已登录,然后IDP将用户浏览器重定向回SP,并在重定向信息中包含验证信息,SP通过读取验证信息来判断该用户是否已全局登录。如果判断通过,则允许该用户访问其服务;如果判断没有通过,则SP将用户指向SP登录界面。另外,在IDP、SP1、SP2都提供全局退出功能,用户执行全局退出操作时,IDP将清除用户浏览器中的cookie。

IDP与各SP采用相同的对称加密算法、加密密钥来加密验证信息。另外,为了避免SP遭受重放攻击,每次SP同IDP交互前,SP均产生一个随机数,并将该随机数加密,然后包含在重定向到IDP的重定向信息中。IDP通过解密获得该随机数,并将其包含在验证信息中一起加密,然后将该加密信息包含在重定向到SP的重定向信息中。SP解密后,首先要判断其中的随机数是否是自己刚才产生的,如果不是则认为该重定向信息为重放攻击,不予处理。

具体流程图请参看图4、图5。

本系统基本实现了单点登录的功能,IDP与SP之间验证信息的传递方式与微软Passport类似,采用加密传输的方法;本系统功能比较单一,主要实现了单点登录功能,对于身份联合、用户个人信息访问控制等功能并未实现。本系统基本上是安全的,用户登录提交均采用https方式,并且在IDP与SP交互时,也利用了SP产生的随机数来避免了遭受重放攻击。本系统的缺点是对于cookie的加密保护不够完善,IDP与SP交互信息也只是使用简单的对称加密算法加密,而且加密函数、密钥均需要双方事先协商好。因此本系统并不适用于实际应用。

结束语

随着互联网络的飞速发展,各种提供网络服务的网站也如雨后春笋般纷纷涌现,因此人们对于单点登录的需求也会越来越强烈。然而究竟单点登录是否可行?本文通过分析当前两个最主流的单点登录协议:技术细节不公开的微软Passport单点登录协议,以及仍处于研究阶段的自由联盟(Liberty Alliance)规范,并结合笔者实现的以个人域名作为身份标识的单点登录系统,得出以下结论:单点登录在技术上是完全可行的,只要确保单点登录系统的安全性,以及认证服务器的公正权威性,单点登录技术一定会被人们广泛接受,进而在互联网络应用中为人们提供一个更加便利的环境。

参考文献

[1] David P. Kormann .Aviel D. Rubin.Risks of the Passport Single Sign on Protocol[EB/OL].2000

[2] Susan Landau ,Jeff Hodges. A Brief Introduction to Liberty[J-OL].February 2003

[3] Liberty Alliance Project.Liberty Alliance Phase 2 Final Specifications

[EB/OL].http://www.projectliberty.org/specs/ , 2003

[4] Ing. Radovan Seman. Internet applications security[M]。 November 2002

[5] ZDNet China专稿。 SAML标准提高网络安全性[J-OL].2003年7月1日

[6] ZDNet China专稿。 深度分析:“自由联盟”,还是微软Passport?[J-OL].2003年9月20日

[7] 姜伟。 Kerberos:面向开放式网络的认证服务[D].1999年12月21日

(责任编辑:IT教学网)

更多