单点登录技术:微软Passport单点登录协议和自由联盟规范
随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务。然而目前提供服务的网站大多采用用户名、口令的方式来识别用户身份,这使得用户需要经常性的输入自己的用户名、口令。显然这种认证方式存在着弊端:随着用户网络身份的增多,用户相应的需要记忆多组用户名、口令,这给用户造成记忆上的负担;另外频繁的输入用户名、口令,会相应的增大用户的口令密码被破解的机率。为了改变这一现状,单点登录技术应运而生。
单点登录技术的核心思想是通过一定的方式使得各提供服务的网站之间建立某种联系,用户只需要在其中一个认证网站进行登录后,即可实现全局登录,当用户再访问其他网站时,不需要再次登录,其身份就可以被验证。我们可以看到采用单点登录技术后,用户只需要记忆一组用户名、口令,并且在登录多个网站时只需要输入一次用户名、口令,这就使得用户可以更加安全快捷的使用互联网上的各种服务。
单点登录的一般模型
在单点登录的一般模型中,一般由三部分构成:(1)用户 (2)身份提供者 (3)服务提供者。如图1所示。
用户是指通过浏览器来使用单点登录服务的个体。身份提供者在单点登录中提供对个体的身份验证服务,相当于一个权威机构。服务提供者是指具体为用户提供某种服务的机构。用户在身份提供者那里注册身份,当用户进行单点登录时,需要在身份提供者处登录,进行身份验证,由身份提供者为用户标记登录信息。通常把用户在身份提供者处进行的登录称作全局登录。用户在全局登录后,当访问其它的服务提供者时,被访问的服务提供者首先直接与身份提供者进行交互,来询问该用户是否已全局登录,如果确定该用户已全局登录,则允许该用户来访问自己提供的服务,否则将该用户重定向到身份提供者处,进行全局登录。
在具体的单点登录实现中,身份提供者和服务提供者进行交互的方式不尽相同。如微软的Passport单点登录采用的是在重定向信息中包含加密后的验证信息来进行交互,而自由联盟的单点登录规范是采用安全声明标记语言(SAML)来进行交互的。下面本文就通过介绍当前这两个主流的单点登录协议:微软Passport单点登录协议和自由联盟规范来进一步阐述单点登录技术。
一、微软Passport单点登录协议
1.1 微软Passport服务
提及微软Passport单点登录协议,我们自然要先介绍的是微软Passport服务。在微软的www.passport.com站点上我们可以看到微软Passport的使用条款和通告。微软Passport 是由微软公司运行的一种Web 服务,该服务会使用户登录到网站以及执行电子商务交易的过程变得更加简便。微软的Passport服务是.Net战略的一部分,通过一次登录就可以使用户获得访问很多网站的权限。微软宣称Passport的目的是使会员在使用互联网和在线购物时更方便、快捷和安全,它得到了包括1-800-Flowers、CostCo、OfficeMax和Victoria Secret在内的诸多著名在线商店的支持。微软Passport服务从本质上来说是一种由微软控制的中央统筹式的单一登录服务。微软旗下的Hotmail、Messenger与ISP服务(MSN)都有加入此机制,目前约有2亿个使用账户。
1.2 微软Passport单点登录协议
在微软Passport服务模式中,有三个主体:(1)使用web浏览器的用户(假设该用户已经注册了Passport服务),(2)服务提供者(对用户提供某种服务的网站),(3)Passport登录服务器。Passport登录服务器保存着用户的认证信息以及用户的个人信息,服务提供者在得到用户允许的前提下可以到Passport登录服务器上获取用户个人信息。
微软Passport单点登录协议流程如下[1]:当一个用户通过浏览器访问一个服务提供者网站时,如果该网站需要验证用户的身份,就把该用户的浏览器重定向到Passport登录服务器。下一步Passport登录服务器通过SSL连接为用户提供一个登录页面,在用户登入该服务器后,被重定向回服务提供者网站。此时认证信息被包含在重定向消息中。该认证信息使用三重DES加密算法加密,加密密钥是由Passport登录服务器和服务提供者网站事先协商好的。在服务提供者网站检验了认证信息的真实性后,即可认为该用户成功登录。具体流程图可参考图2所示。
微软Passport单点登录协议采用了Kerberos认证机制来完成身份认证工作。Kerberos是一种为网络通信提供可信第三方服务的面向开放系统的认证机制。在Kerberos认证机制中,每当用户(client)申请得到某服务程序(server)的服务时,用户和服务程序会首先向Kerberos要求认证对方的身份,认证建立在用户(client)和服务程序(server)对Kerberos的信任的基础上。在申请认证时,client和server都可看成是Kerberos认证服务的用户,为了和其它服务的用户区别,Kerberos用户统称为principle,principle既可以是用户也可以是某项服务。当用户登录到工作站时,Kerberos对用户进行初始认证,通过认证的用户可以在整个登录时间得到相应的服务。Kerberos既不依赖用户登录的终端,也不依赖用户所请求的服务的安全机制,它本身提供了认证服务器来完成用户的认证工作[7]。简单地说,Kerberos通过集中存储的安全信息和分布式的“tickets”来实现用户身份认证。具体而言,微软Passport服务通过如下步骤实现用户身份验证:
1、用户开启客户端应用程序或浏览器,打开登录界面,并输入用户名、口令。
2、登录动作引发客户端应用程序或网站向微软Passport请求一个登录确认证明(即“ticket-granting-ticket”,TGT)。
3、微软Passport验证用户用户名、口令,颁发TGT,确认登录已经成功。在满足一定安全约束条款的前提下,该TGT在一定时期内被缓存。
4、客户端应用程序或网站向微软Passport提交TGT,同时请求颁发一个“会话证明”。
5、微软Passport使用TGT来验证客户端的身份是否有效,确认后向相应的Web Service颁发“会话证明”。
6、客户端向所请求的Web Service提交会话证明,经确认后,客户端开始同Web Service进行信息交换,所有数据都经由该“会话证明”加密从而确保安全。
1.3 微软Passport小结
虽然微软Passport已经提供了多年的服务,但是其安全性一直为人们所置疑。首先,其中央统筹的模式是最为大众所质疑的。因为核心的验证服务器以及用户个人信息服务器都是微软一手控制的,再加上其技术细节并不对外公开,而且没有依据某一标准,致使人们一直担忧用户的个人资料被泄漏。其次,微软的Passport系统曾被个人或黑客多次入侵。这些都限制了微软Passport服务的进一步推广。
二、自由联盟规范
4.1 自由联盟(Liberty Alliance)
自由联盟是一个联盟机构的名称,该联盟的宗旨是创建一个经由与Internet相连的任何器件都能实现的具有开放性的、联合的、单一签字身份识别的解决方案,该机构的目标是为实现利用因特网进行交易时随时随地的单点登录认证,并且进行有关标准的制订。所有商业机构和非商业机构都可取得该机构的成员身份。加盟该机构的创始企业中有服务提供、汽车制造、金融服务、旅行业、数字媒体、零售业、电信及技术相关业界的著名企业。目前自由联盟由170多家厂商组合,包括Sun、Nokia、American Express等,他们负责提供技术规范与商业指南来当作跨企业的身份认证服务。Liberty本身并不产生应用,这方面是由技术厂商(如Sun、Novell、Peoplesoft与HP等)来开发支持Liberty标准的兼容应用。自由联盟规范可让不同的服务供应商加入一个联邦式的信赖网络中[6]。
自由联盟的主要目标有如下三个方面:
使个人消费者和企业用户能够安全保管个人信息。基此,推进无信息垄断的、可以相互运用并跨越多个网络的服务。
制订实现“单点登录”的开放标准。基此,使用户在任何1个WWW站点通过认证后,不必接受其它站点认证就可以使用其服务。
制订所有接入因特网的设备都可以使用的网络认证开放标准。基此使手机、车载设备和信用卡等各种各样的终端间都能进行安全的认证。