设计
摘 要 研究了湖南铁通宽带门户网站身份认证系统的功能需求,从统一认证、认证安全性和通用性等方面提出了一套全面的解决方案。方案利用集中用户管理实现统一认证;利用“一次一密”,两次认证的方式实现良好的安全性;利用WEB SERVICES架构实现系统的通用性。
关键词 统一身份认证;时间戳;Web Services
背景
在以前,宽带的速度是吸引用户的根本原因。当宽带用户以前所未有的速度成倍增长的时候,价格和速度已不是影响网民上网的主要因素,没有丰富的内容用户就不能真正享受“宽带之旅”。湖南铁通从各个不同的内容提供商手中获得多种内容服务,这些服务在窄带情况下用户享用起来比较困难,比如在线下载、VOD点播、在线游戏等。然后通过宽带门户网站进行集成,再提供给用户。用户通过访问宽带门户网站可以享受到多种内容服务。要想从用户处获取使用内容的费用,宽带门户网站就必须要有一个良好的认证计费系统,本文主要阐述身份认证系统的设计。
身份认证系统的目标功能
通过对整个宽带门户网站的需求分析,确定了身份认证系统必须具备以下的功能:
a)提供统一的认证途径。宽带门户网站的各个内容服务系统是从不同的内容提供商手中获得的,每个系统都有各自的用户系统和认证方式。让用户每访问一个内容服务系统就需要登录一次,显然是用户难以接受的认证方式。因此身份认证系统要提供一个统一的身份认证,让用户一次登录,可以访问全网的资源
b)系统具有良好的可扩展性和可集成性。宽带门户网站在发展过程中还会不断地提供新的内容服务,这就要求身份认证系统具有良好的扩展性和可集成性,不仅能支持现有的内容业务系统及其现有的用户系统,当有新的内容业务系统被部署或开发的时候,这个统一身份认证服务可以作为它的身份认证模块的形式工作,也就是说,新的内容业务系统可以不自带用户系统,可以通过集成该服务的形式来实现等价的功能。
c)系统提供跨平台认证的功能。各个内容业务系统各有特点,分别运行在不同的平台上,都要能和身份认证系统交互,这就要求身份认证系统提供跨平台认证的功能。
d)系统具有良好的安全性。由于使用内容业务系统,用户要付费,身份认证系统要保障用户的安全。
解决方案
1、统一认证的两种方式
统一身份认证系统的核心思想是将用户统一存储,对应用系统统一授权,规范内容业务系统的用户认证方式,从而达到提高整个系统的整体性、可管理性和安全性的效果。内容业务系统要想判断某一用户是否可以访问自己,必须和身份认证系统进行交互。由身份认证系统负责对用户进行集中认证。
用户访问内容服务系统可以有两种方式:通过宽带门户网站访问内容服务系统,或者是直接访问内容服务系统。根据这两种访问方式身份认证系统要提供两种认证方式。
第一种认证方式:用户直接登陆内容业务系统,内容业务系统将用户提供的用户名/密码等转发给统一身份认证服务以检验其是否通过授权。流程如图1所示
图1 第一种身份认证方式 |
第二种认证方式:用户首先登录统一身份认证系统,验证其是否为合法注册用户,如果是合法用户可获取权限值。由于合法用户不一定开通了所有的内容服务,所以使用这个权限值访问内容业务系统时,内容业务系统将根据该权限值与统一身份认证服务进行交互,以检验访问的合法性。流程如图2所示
图2 第二种身份认证方式 |
2、安全方案
如果将身份验证凭据以明文形式从客户端传递到服务器,在同一网络的某台主机上配备有基本网络监控软件的攻击者可以捕获传递的信息并获取用户的名称和密码。对于这种安全威胁,身份认证系统对用户名和口令进行加密,避免以明文的形式在网络上传输。
但是威胁依然存在,对于普通的加密算法,攻击者会有办法解密从而获取用户口令。即使是采用加强的加密算法,攻击者一时无法解密,也可以实施会话重放攻击。对于这种安全威胁,一种解决的办法是,当执行关键操作时,重新进行身份认证。比如,当用户通过身份验证后,可以进入VOD点播的页面;当用户指定播放某一VOD影片时,系统要求用户重新输入用户名、口令进行再一次验证。但是这样做,会让用户频繁输入用户名、口令,并不可取。
更好的做法是:采取结合DES算法,采用加入时间戳基于MD5摘要算法的一次一密方法对访问用户的口令进行加密,把用户名、口令和时间戳一起进行加密传输,即使攻击者进行重放攻击,由于时间戳已经改变,就不能通过认证。并且在执行关键操作时,由内容业务系统到身份认证系统再次进行验证,而不需要用户重新输入用户名和口令。以用户以第一种方式登录VOD点播系统为例,具体流程由图3所示:
图3 加密认证流程 |
流程描述如下:
1) 用户登录时将用户名、口令提交给VOD系统;VOD系统将用户名转发给身份认证系统。
2) VOD系统将用户名、口令和时间戳一起加密后形成字符串PWD。
3) 同时,身份认证系统根据得到用户名查得用户的注册密码,并把用户名、注册密码、时间戳一起加密后形成字符串PASS。
4) VOD系统把PWD发送给身份认证系统。身份认证系统比较两者是否一致
5) 如果一致则允许用户进入VOD系统的页面。用户选择观看的影片
6) VOD系统再次生成PWD,身份认证系统再次生成PASS,并再次比较两者是否一致。如果一致,则播放影片
3、通用接口
为了能让运行在不同的平台上的内容业务系统都能够访问身份认证系统,并且让身份认证系统能够不断地集成新的内容业务系统,当身份认证系统统一认证功能和安全方面的功能后实现以后,我们利用WEB SERVICES技术架构,把身份认证系统转换成身份认证服务。
该服务把身份认证系统提供的各项功能用WSDL语言描述成通用的服务接口,在这个接口中描述了身份认证服务提供给内容业务系统使用的一个函数,该函数的入口参数是用户名、用户口令和内容业务系统的ID;出口参数是该用户能否访问该内容业务系统的字符串。
以下是身份认证接口的WSDL描述:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="railwayhelperRemoteInterface" targetNamespace="http://www.railwayhelper.com/definitions/railwayhelperRemoteInterface" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.railwayhelper.com/definitions/railwayhelperRemoteInterface" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<message name="loginRequest">
<part name="userid" type="xsd:string"/>
<part name="password" type="xsd:string"/>
<part name="serviceid" type="xsd:string"/>
</message>
<message name="loginResponse">
<part name="result" type="xsd:string"/>
</message>
<portType name="railwayhelperJavaPortType">
<operation name="login">
<input name="loginRequest" message="tns: loginRequest"/>
<output name="loginResponse" message="tns: loginResponse"/>
</operation>
</portType>
<binding name="railwayhelperBinding" type="tns:railwayhelperJavaPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="login">
<soap:operation soapAction="" name="loginRequest">
<soap:body use="encoded" encoding namespace="http://tempuri.org/creator.javabean.railwayhelper"/>
</input>
<output name="loginResponse">
<soap:body use="encoded" encoding namespace="http://tempuri.org/creator.javabean.railwayhelper"/>
</output>
</operation>
</binding>
</definitions>
在这个接口中描述了身份认证服务提供的login函数,该服务的入口参数为:userid为用户名、password为用户名、口令和时间戳一起加密后得到的字符串PWD、serviceid内容业务系统编号,返回值是否允许用户登录该内容业务系统的字符串。
不论内容业务系统运行在何种平台上,只要根据WSDL接口的描述和SOAP协议规范,把用户名和PWD用SOAP消息发送给身份认证服务,身份认证服务就会把认证结果用SOAP消息返回个内容业务系统。内容业务系统不必了解认证服务是怎样实现的,从而实现跨平台的通用认证。
结束语
上述的宽带门户网站的身份认证方案已经实际应用于了湖南铁通宽带门户网站,取得了良好的效果。