SOA的统一身份认证服务架构的设计与实现
来源:上海炯耐 更新时间:2012-04-15

    建设数字化校园的目标是消除校园网中的信息孤岛,整合校园网中的各种应用系统并实现统一的身份认证服务机制。运用SOA构建统一身份认证服务架构,一方面它实现了平台无关性,另一方面实现了分布式部署、组合和使用的服务。

    随着近几年高校对校园网络基础硬件设施扩建的完成,很多高校已开始建设数字化校园,而统一身份认证服务作为数字化校园建设的基础部分,它是每个高校建设数字化校园所面临的一个问题。笔者以在数字化校园建设方面具有特色的部分高校为例,研究其校园网的统一身份认证服务后,发现它们都别具一格,各有所长,但在总体架构上没有一套统一、完善的理论与方法。本文运用SOA(Service—Oriented Architecture)模型,设计并实现了一个基于SOA的统一身份认证服务架构的方案。

    1 统一身份认证服务架构

    1.1面向服务的架构SOA

    SOA(Service—Oriented Architecture)是一种软件架构模型,它可以根据需要对松耦合的粗粒度应用组件进行分布式部署、组合和使用。服务之间采用松耦合有两大好处,第一是各种服务能够灵活组合,第二是每个服务的内部结构和实现发生改变时,其构成的整个应用程序无需改变。反之,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,不易对其进行重构。SOA的关键是“服务”的概念,在该架构中,定义了两个角色,服务提供者和服务使用者。

    目前支持SOA架构概念的软件体系有好几种。使用基于SOAP协议的Web服务技术来构建统一身份认证服务架构,这种技术正快速发展。是未来的发展方向,它提供了一个系统架构以及一系列的技术标准与规范。

    1.2基于SOA的统一身份认证架构

    统一身份认证服务主要实现用户管理、身份认证、分级权限管理和单点登录等功能。以解决校园数字化建设过程中用户定义模糊、用户身份组织零乱、交叉权限管理定义和应用系统入口多样性等棘手的问题。

    本系统架构以北京大学和重庆大学等已建设或正在建设的统一身份认证服务为研究基础,结合SOA等技术对统一身份认证服务进行了进一步定义。在基于SOA的统一身份认证服务架构中,依据SOA定义的服务提供者和服务使用者角色,将统一身份认证服务所要实现的功能封装成为服务提供者,作为服务使用者的各应用系统必须依据统一服务接口所定义的调用方法才能调用服务。服务提供者按三层结构来设计,分别为统一认证中心数据库、统一信息管理和统一服务接口。对统一认证中心数据库的访问操作经过封装后。只有经过统一服务接口才能进行访问,同时在统一服务接口处设置相应的安全性检查和访问控制的策略匹配来提高对中心数据库的访问安全。基于SOA的统一身份认证服务的架构如图1。

图1基于SOA的统一身份认证服务的架构
    图1基于SOA的统一身份认证服务的架构



    服务使用者调用一次服务的过程为:1)服务使用者依据认证语言及语法构造认证指令。21使用与服务提供者约定的加密算法对认证指令进行加密。3)将加密后的密文封装成SOAP消息,并将消息发送到服务提供者。4)服务提供者收到SOAP消息后拆封并提取消息。5)使用与服务使用者约定的加密算法解密密文。 6)对明文进行语法、语义进行有效性验证,通过验证后执行认证指令。71将执行的结果加密、封装为SOAP消息并再发送给服务使用者。8)服务使用者收到 SOAP消息后拆封、解密并提取执行的结果。在上面所提到的认证指令是基于XML格式的,所以构造与解析认证指令实际上是对XML的序列化与反序列化的过程,同时执行结果也是XML格式的,所以提取执行结果实际上也是对XML的处理,认证指令的描述见下节。对认证指令及执行结果的加密与否在这里是可选的。当返回的执行结果的信息量很大而对安全性要求不高的内容可以不进行加密而直接返回明文,从而减少加密与解密所花的时间。

    2 关键技术的设计与实现

    2.1 SOAP消息

    2.1.1消息的流程

    基于SOAP协议的消息的请求/响应过程经过4个阶段:服务使用者构造SOAP消息、服务提供者接收并解析SOAP消息、服务提供者响应并构造SOAP消息、服务使用者接收并解析SOAP消息,过程结构如图2。

图2 SOAP消息过程结构图
    图2 SOAP消息过程结构图



    2.1.2消息的定义

    在这里,服务使用者与服务提供者之间是通过SOAP消息的方式相互通信,并根据需要对SOAP消息进行了一些自定义。

消息的定义



    其中,元素中的bSecurityFlag属性是加密标志,它的数据类型为值布尔性,取值可以是True和False,分别对应密文和明文两种类型,加密的对象是元素中的内容。元素包含认证指令。

    2)SOAP HTTP响应消息格式如下:

认证指令格式



    2.2认证指令系统

    2.2.1认证指令系统模型

    为了定义规范的接口,通过模拟命令行系统中的指令系统,构造一个基于XML的指令系统,此模型总体结构由以下几个部分组成:

    1)认证指令控制器

    认证指令控制器的主要功能是解析用户提交的认证指令。即验证用户的合法性;检查认证指令语法的正确性;对认证指令和返回值进行解密和加密:对系统接口的访问进行日志记录。

    2)认证指令执行器

    认证指令执行器的目的在于实现有指令语法控制器转交的具体任务。指令执行器接收指令,根据指令进行相应的操作,然后将执行结果以XML格式返回给指令控制器。

    3)XML认证语言

    XML语言是被多种开发语言良好支持的扩展标记语言,建立在XML基础上的认证语言将很好被其他开发语言解析利用。

    2.2.2认证指令格式的定义

    通过将指令序列化为XML格式是为了提高它的可读性和跨平台性。当前使用的任何平台,任何语言都能够正确处理与理解XML格式的文件。当使用XML格式的认证语言后它就不再局限于一种平台或一种高级语言的处理,它可以使用于任何平台、任何语言。

    1)认证指令格式

认证指令格式



    其中,元素用于通知认证指令控制器服务请求者提交的指令,认证指令控制器根据元素所包含的内容决定调用何种指令执行器。由于一个指令可能包括多于一个的参数,所以元素的每一个子元素都为一个参数,并且都带有参数类型param Type属性及参数的名称paramName属性。

参数类型param Type属性



    由于执行结果返回的值不一定只有一个值,例如返回一条记录,而一条记录中又包括了诸多字段,所以使用元素的子元素来返回一条记录中的一个字段,并且还包括字段名称returnName及字段类型retumType。同时又有可能返回多于一条的记录。所以使用元素。服务提供者将不同的执行结果序列化为标准XML格式的内容,而返回给服务使用者后它可以通过将XML反序列化为自己需要的格式并进行相应的处理。

    3 结束语

    统一身份认证服务作为数字化校园建设的基础,它的架构与建设将直接影响一个学校数字化校园建设的水平及使用周期。构建一个具有可扩展性、跨平台、高可靠性的统一身份认证服务是每个学校都所期望的。本文通过分析、研究国内个别在数字化校园建设方面具有特色的学校的统一身份认证服务,并通过实际设计与构建统一身份认证服务后提出了统一身份认证服务的架构。