5.3 Web服务身份管理
网络上的同一用户在不同地方可能有多个独立账号对应不同的身份标识。这样给用户使用带来一些不便,首先,用户自己独立维护多个账号信息,并且每使用一个服务的资源都需要登录。如何提高管理效率,简便用户使用?这就是用户的身份管理问题。
为了解决这个问题,一种方法是用户使用一个全网唯一的账号,即有一个唯一的身份,如Microsoft的.NET Passport就是这样的思想;另一种方法是将在多处建立的用户账号信息进行联合,使得一个账号登录后可以在多处获取资源。
身份管理的另一方面就是单点登录,即允许用户只需要登录一次,即可访问多个不同域的资源。
Microsoft的.NET Passport和自由联盟工程(The Liberty Alliance Project,LAP)是典型的用户身份管理系统实现。
5.3.1 .NET Passport
Passport是Microsoft实现的单点登录系统(Single Sign In, SSI),它提供了一种跨域在线验证用户的服务。目前只提供了实现用户跨多个Web站点之间的单点登录功能,还不能够直接应用于Web服务。用户在开发基于Passport的Web服务应用程序时候,还需要添加处理SOAP消息的接口。
1.Passport的SSO过程
Passport为实现用户跨域身份验证提供一种技术手段,基本过程即用户的身份验证过程。在这个过程中,参与方包括用户、访问的Web站点和Passport服务器,处理流程如图5-13所示。
错误!
![]() |
| 图5-13 Passport身份验证的处理流程 |
第1步:用户向Web站点发送Web页面请求。
第2步:如果Web站点需要验证用户身份,则使用重定向(Redirect)技术把用户定向到Passport登录服务器。在重定向中包括两个重要的参数,一是用户初始请求站点的唯一站点ID;二是用户身份验证完毕后返回的URL(即用户初始请求的URL)。
第3步:Passport登录服务器首先查询站点的唯一站点ID号,如果站点不是Passport参与站点,则返回错误;否则出现一个登录页面,用户需要输入用户名字和口令(这部分信息使用SSL传输)。
第4步:Passport登录服务器查询用户数据库,如果用户存在,则为用户生成cookie,即用户身份验证的标志,它用Passport和站点之间的共享密码加密(每个站点都不同)。
第5步:Web站点提取cookie并交给Passport管理器处理,如果能够解密cookie,提取cookie中的用户信息,则用户身份通过。
第6步:Web站点返回用户请求的Web页。
2.前提条件
为了保证Passport基本身份验证过程的顺利实现,有两个基本前提条件,一是Passport服务器和参与的Web站点之间需要一个共享密钥用来加密cookie;二是为了保护用户输入的用户名和口令免受网络监听攻击,需要使用SSL保护用户名字和口令。
(1)建立共享密钥
Web站点(或者Web应用程序)和Passport需要建立一个共享密钥,用来加密两个服务器之间通信中的敏感信息,如cookie。可以通过安全邮件的方式,或带外(Out of Band)方式实现。
(2)SSL(Secure Socket Layer)
SSL是TCP协议层上的一种安全协议,它提供了数据加密、身份验证和数据完整性保护功能,在Microsoft .NET Passport中,需要使用SSL来保护传输中的敏感信息,如用户输入的用户名和口令等信息。在后续内容中,我们还将介绍在安全级别要求比较高的情况下使用SSL的要求。但是无论在什么情况下,用户输入用户名和口令始终都使用SSL保护。
3.用户账号信息
一个Passport用户账号信息主要包括如下3个部分。
(1)Passport唯一标识符
当用户注册并且Passport服务产生用户账号的时候,为用户产生一个唯一的标识符,这是一个64位的数字。
(2)用户轮廓
用户轮廓包含一个用户邮箱或者电话号码,这是用户注册时唯一要求的信息。用户轮廓信息中还可能包括用户的姓和名(可选),或用户的通信地址信息,如邮政编号、国家和省(可选)。
(3)Passport信任证
标准的Passport信任证(Credential)包括一个用户邮箱或者电话号码,加上用户的口令,还可能包含一个用户秘密问题用来重置(Reset)口令。在强信任证登录(Strong Credential)的时候,还有一个4位的安全密钥。
4.登录后的跨域验证
当用户登录Passport服务器后,Passport服务器将产生如下3个cookie。
(1)Ticket cookie
这是产生的第1个cookie,其中包括PUID(Passport Unique ID)和一个时间戳。
(2)Profile cookie
这是第2个cookie,其中包括用户轮廓信息。
(3)Visited Sites cookie
这是第3个cookie,其中包括用户已经登录过的站点信息。
所有这些cookie信息都使用了Web站点和Passport服务器之间的共享密钥加密。当用户需要访问同一个站点时,只需要递交相应站点对应的cookie即可实现身份验证。
当用户访问不同的站点时,由于没有相应站点的cookie,因此还有一个相应的身份验证过程。不过,由于用户已经在Passport登录服务器验证过,所以其身份验证过程和基本身份验证过程的不同是在第3步和第4步。
5.安全登录措施
Passport还提供了安全强度更高的安全登录措施,主要包括强制登录和安全级别。
(1)强制登录
强制登录是指在一些情况下为了保证安全,要求用户重新输入用户名和口令的措施。如一个在线银行账号,为了防止用户登录后被其他人员使用在线信息,银行要求用户每30分钟重新登录一次。
在Passport中,Web站点(或Web应用程序)的Passport管理器可以通过两个参数来设置强制登录机制,即TimeWindow和ForceLogin。
① TimeWindow。TimeWindow是一个时间窗口,它表示用户cookie有效的时间范围。其单位是秒,取值范围为100~1 000 000(约为1分钟~11天)。如果用户cookie时间超过时间窗口值,则用户需要重新登录。当然,如果和ForceLogin配合使用,用户cookie在时间窗口范围内也需要重新登录。
② ForceLogin。这是一个布尔值(True/False),如果为True,则表示用户需要重新登录;如果为False,则用户cookie在超过窗口值后需要重新登录。
(2)安全级别
安全级别是对用户身份验证过程的安全强度要求,通过参数SecureLevel实现,该参数有如下3个值。
① 0。参数值为0,表示为一般正常的用户登录过程。在该过程中除了用户名和用户口令使用SSL加密外,所有的通信信息都没有采取其他安全措施,这样的登录方式称为“标准登录方式”。
② 10。参数值为10,表示为用户的登录过程需要通过安全通道。在标准登录方式中,由于没有其他安全措施,因而黑客通过网络监听获得用户cookie即可进行重放攻击,从而冒充用户。目前安全通道主要是通过SSL实现,即用户在访问Web站点及重定向过程中都使用HTTPS来代替HTTP。
③ 100。参数值为100,表示用户的登录过程除了安全通道外,还需要4位安全密码验证,这一过程称为“强信任证登录”(Strong Credential Sign In)。为了防止用户口令被破解,强信任证登录使用两阶段登录(two-stage sign-in)过程。在第1阶段,用户登录过程和安全通道登录过程一样;在第2阶段,要求用户输入4位安全密码。如果输入口令5次错误,用户的安全密码将失效。这时,用户还可以使用正常的登录过程。但是,如果用户需要强信任证登录,则需要通过另一个安全过程重置安全密码(如通过回答3个有关的安全问题,即可重置安全密码)。
| 回书目 上一节 下一节 |