基于异构系统应用集成安全策略的研究与实践

时间:2022-04-19 09:09:49

基于异构系统应用集成安全策略的研究与实践

摘要:以民航异构系统为实例,根据系统存在的现状,即系统间沟通效率低、跨平台信息交互难等问题,提出了基于Web服务应用集成方案;结合民航本身安全性特点,并遵循WS-Security安全规范,提出两层安全控制策略,实现了部门间跨平台、松耦合方式的应用集成,很大程度上提高了系统数据的通用性,增强了民航各系统间协同工作能力,提高了Web服务在异构系统中应用集成的安全性能。

关键词:应用集成;异构系统;安全控制;Web服务;安全性能

中图分类号:TP391文献标识码:A文章编号:1009-3044(2010)18-5086-03

The Research and Practice of Security Policy for Application Integration Based on Heterogeneous Systems

HU Qi-shi, YU Wei-xing

(Experimental Center of English Language at Foreign Languages Institute, Jianghan University, Wuhan 430056, China)

Abstract: As far as the Examples of the heterogeneous systems in the Civil Aviation, According to the existing status of the system, there are some urgent problems such as the lack of inefficient communication between the systems, the difficulty of the cross-platform information exchange, and so on.An application integration solution is proposed based on Web services, In the consideration of security features in its own civil aviation, a two-layer security control strategy is proposed, which finishes intersectoral cross-platform, loosely coupled application integration., Greatly improves the system interoperability of data, Enhances capabilities of various systems work together in the Civil Aviation, And improves the safety performance among heterogeneous systems based on Web Services.

Key words: application integration; heterogeneous systems; security control; web services; safety performance

1 集成背景

随着民航业的不断发展,信息化进程在民航领域不断加速前进,但由于历史的原因,应用系统当初只是被用来解决专门的业务问题[1],例如,机务部使用了基于J2EE技术的民航机务维修差错预警专家系统,而空管中心一直使用的是基于.NET的空管中心预警管理信息系统;每个部门根据自己的需求,设计时没有统一的标准,造成大量的应用系统运行在不同的软、硬件平台之上;导致了民航部门各系统之间相互独立,给民航整体信息化管理带来很大的困难。主要体现在数据共享困难、应用软件可复用性较低和集成过程中数据安全控制不足等几个方面[2],所以进行有效的异构系统应用集成是势在必行,这将为民航的信息化管理带来极大的便利,从而会最大限度降低不安全事件或差错的发生率。

2 安全性应用集成方案

2.1 集成总体方案

根据WEB服务本身标准化和耦合松的属性,结合民航各异构系统采用的是B/S模式开发的特点,提出五层模式的集成方案,即应用层、业务逻辑层、Web服务层、服务应用转换层和信息服务层。

2.1.1 应用层

采用浏览器,使之成为“瘦客户端”,用户只需浏览器就可访问系统资源,它的作用是将应用产生的结果显示给用户。

2.1.2 业务逻辑层

该层的主要功能是以组件的形式提供民航已有的处理过程和业务逻辑,这样不仅可以提高系统的可重用性、可维护性和分布系统的计算负荷,也有利于实现与其它系统的集成或整合。该层中所部署的组件的业务逻辑或处理过程一般是整个应用系统中关键的、核心的应用逻辑或处理过程。其实现过程主要是根据业务规则处理请求,对各种请求数据进行有效性验证,然后向信息服务层发出请求,并将响应结果返回;最后完成各种基础业务规则和逻辑应用,为上一层(即Web服务层)提供信息服务。

2.1.3Web服务层

该层主要由 Web应用服务器和SOAP服务器两个部分组成;Web应用服务器的主要功能是提供交互式方式,并负责将来自上一层的请求转发给SOAP处理器,通过HTTP或HTTPS与上一层通信。SOAP服务器主要由被部署服务列表、服务管理器和XML转换器三部分组成[3]。当 Web应用服务器向 SOAP 服务器发送 SOAP 消息时,使用 HTTP 协议传输,当 SOAP 服务器收到消息时,将消息交给服务管理器;服务管理器检查被部署服务列表,查找在 SOAP 消息中所需的服务; XML转换器负责将XML结构转换成本地的组件调用,将结果转换成SOAP响应消息,由服务管理器将消息发送到Web应用服务器。Web 服务器得到 SOAP 应答后经过解析,把响应的信息送回到上一层服务应用转换层,最终为应用层提供服务。

2.1.4 服务应用转换层

民航对信息的安全性和有效性要求比较高,为了适应这一特点,以便更明确体现服务的管理和配置的情况,让用户安全有效的调用Web服务层的信息,在此设置了用户与Web服务层之间的接口层,即服务应用转换层,该层的功能主要表现在两个方面,一方面是信息转换功能,即把从SOAP处理器[4]发来的XML描述的内容转换为界面友好的各种终端可以识别的内容,达到有效通信的目的,另一方面是信息安全功能,为了让Web服务层能更安全有效的将服务信息提供给应用层的用户使用,充分应用Web服务使用的SOAP消息制机,对SOAP消息进行安全认证,达到安全通信的目的。

2.1.5 信息服务层

数据层主要包含各种数据库系统(包括知识库系统和数据库管理系统)。数据层主要完成对数据的存取、更新、检索、修改,维护数据的安全性、完整性、一致性等工作。基于Web服务的应用集成方案中,数据库不再和每个活动客户保持一个连接,而是若干个客户通过业务逻辑组件共享数据库的连接。

3 安全控制设计与分析

利用UDDI进行Web服务时,一般的过程是先将系统需要共享的逻辑业务接口或组件封装为Web服务[5],并将服务部署到Web服务容器中,然后将服务到UDDI注册中心,最后查询和调用这些服务,实现应用集成。因为民航对信息安全性要求比较高,在安全控制上采用了对私有UDDI注册中心扩充和SOAP信息相结合方式的两层安全控制策略。

在实际操作过程中,不同用户对Web服务[6]拥有三种操作(查询、和调用)的不同权限,体现出用户类型的特殊性和多样性,因此将用户分为五种类型,分别赋予不同操作权限,具体分类情况如下:第一类用户:可以查询、和调用Web服务;第二类用户:可以查询和调用WEB服务,但不能服务。第三类用户:可以查询和Web服务,但不能调用服务。第四类用户:只能查询Web服务,但不能和调用服务。第五类用户:无权限做任何操作,即不能查询、和调用Web服务。

具体控制方式是:由Web服务授权给五类用户授予不同五种权限,并结合SOAP消息身份验证对五类用户进行查询、和调用服务三种操作实施安全控制。例如:从调用服务操作权限看,对于第一、二、三、四类用户而言,前两种有调用服务的权限,这四类用户都有基本的查询操作权限,如果要控制第三、四类用户可查询而不能调用服务的操作权限,那么可以结合“SOAP消息身份验证”方式。

总之,由于民航用户操作权限的不同,从而形成多类型访问服务用户,根据前面提出的应用集成方案,结合Web服务授权和SOAP消息身份验证二层安全控制策略,可以提高应用集成过程中的Web服务安全性能。

4 安全控制的实现

4.1 Web服务授权

Web服务授权可以控制民航各部门用户查询和服务的操作权限,从而提高异构系统应用集成过程中的安全性能。所用到的授权API是User_Authority,它是在原私有UDDI的基础上的扩充,其功能是设置用户Web服务访问权限。对于、查询服务三种操作权限的控制,主要在业务逻辑层完成,涉及到两个接口,即ConnDB和User_Authority。

这两个接口的主要功能分别操纵数据库和设置用户Web服务的访问权限。接口ConnDB功能是操纵私有UDDI注册中心数据库中数据表Tb_UserAuthority,对数据库进行连接、查询和更新,然后返回User_Authority接口所需要的值(如满足条件的结果集、是否成功修改数据库的判断值等)。User_Authority接口的功能是进行用户访问服务的授权,包括四个主要的方法,即Set_Authority、Query_Authority、Edit_Authority和Delete_Authority。

用ConnDB接口连接民航私有UDDI数据库后,以便能使用权限信息表Tb_UserAuthority,该接口涉及两个主要方法executeQuery()和executeUpdate(),对于授权API(User_Authority)的四个方法中,以Query_Authority方法为例来说明其设计和实现过程,该方法的作用是提取用户Web服务访问权限信息,先用上述ConnDB接口中的方法executeQuery()进行查询,将能满足条件的用户查询出来,然后返回结果集,最后,也是最重要,提出相应用户的Web访问权限信息,该方法返回结果可能是0、1、2、3、4、5六种值,每种值代表不同的访问权限,

使用了上面的ConnDB和User_Authority接口后,可返回用户访问Web服务权限信息,达到对用户权限控制的目的;这些控制主要在业务逻辑层上来完成,对用户服务和查询服务的访问权限很容易控制,但对于Web服务调用权限的控制,则要用SOAP消息身份验证方法。

4.2 SOAP消息认证

结合基于Web服务民航异构系统应用集成的实际,也同样存在调用Web服务时的安全问题,例如,机务维修部对一般员工而言,重要且敏感的月指标信息“空中停车数”和周指标信息“技术事件发生率”等就不予查询、调用或修改,这时可结合SOAP身份验证的方式来完成。随着安全规范的制定和不断完善,各大软件厂商开始认真地考虑为其产品提供使用相同Web服务安全语言的接口和编程工具箱,以下是根据民航异构系统的平台特点,引入了 WS- Security 规范,分析了Web服务安全开发工具的特性,然后从服务端和客户端进行实现基于此规范的Web服务安全性验证,下面从Web服务安全的开发工具、服务端和客户端安全的实现三个方面进行阐述。

4.2.1 Web服务安全的开发工具

在民航的异构系统中的两大流行平台是JAVA和.NET,当采取基于Web服务方式的应用集成时,以Java客户端从.NET服务器端调用Web服务为一个方面的实例,为了实现异构环境下Web服务调用的安全性,在此给合了WS-Security规范来完成此工作;在服务器端以.NET为IDE集成开发平台,给合WSE (Web Services Enhancements)工具性插件,JAVA客户端下载开源性工具包axis-wsse-1.0。

4.2.2 服务器端实现

在服务端的实现中,结合WS-Security 规范,以WSE为基础,进行SOAP消息身份验证配置与设计。主要实现示意图见图1。

总体上说要完成三个方面主要工作,即SOAP消息配置、基于WS-Security的安全认证设计和民航服务认证的实现。

1)SOAP消息配置

SOAP消息配置的目的:为执行SOAP 扩展的功能提供条件,并进行SOAP消息过滤,提高SOAP消息的安全性,具体过程如下。

先将WSE2.0的插件Microsoft.Web.Services2.dll引入到某一系统中并分别创建到Web服务项目中[7],在民航异构系统的服务端要加上SOAPExtension类,以便服务端或客户端进行SOAP信息加密或解密扩展。在Web服务项目对应的虚拟目录下,添加WSE扩充处理元素到配置文件Web.config里,实验证明,无论是.NET客户还是非.NET客户调用时,最好都需要加这个元素,便于扩充处理的调用。下面是在Web.config文档中添加的的配置元素,在节点下添加元素,然后设置SOAP消息过滤,前面应用集成中存在很多Web服务,服务中有返回处理值的方法,为Web服务安全性,在这些方法中加上安全过滤器类SoapContext,其语句为:SoapContext requestContext = HttpSoapContext.RequestContext,其目的是表示只接受 SOAP格式的请求,而Web服务正好是以SOAP消息来完成的,从而达到安全性过虑的目的。

2)WS-Security的安全认证设置

其作用是为遵循WS-Security规范和特定密码存储机制提供条件。

先使用WSE设置工具的设定,设置方式是在其“安全”选项中添加一个密码提供类(PasswordProviderDoing)用来实现WS-Security的安全认证。同时,选择中trace功能用以跟踪此Web服务,因为在WSE中具有IPasswordProvider接口[8],其作用是用来注册密码提供者,通过接口中的方法GetPassword返回指定用户的密码,因此,通过跟踪此Web服务可接收到请求SOAP信息和返回SOAP信息。

然后修改web.config配置文件,提供PasswordProvider安全元素,它是web.config中的 父元素子元素下的安全认证元素,其内容是:,它告诉WSE实现IPasswordProvider接口的类是PasswordProviderDoing,此接口设计完全遵循WS-Security规范。

3)SOAP身份验证实现

根据以上两步的配置与设定,在此可设定服务器端SOAP身份验证,结合民航自身特点,进行具体用户名和密码的设定,其主要实现过程如下。

引用Microsoft.Web.Services2包,添加一个新的类,命名为PasswordProviderDoing,此类实现了WSE中的IPasswordProvider接口,用来提供WS-Security的用户身份验证功能,该类的主要方法是GetPassword(),为了有效管理民航异构系统中部分员工对Web服务调用权限,在服务器端的数据库服务器中,设置了这些员工调用服务的密码表UserServicePassword,其中重要信息是工作证号和调用密码,因为工作证号在该公司是用户唯一的标识,在此设置调用密码是根据用户工作证号从密码表中将其密码调用出来;利用数据库中的密码表和WSE[]中的IPasswordProvider接口,可实现了WS-Security中的用户名令牌方式。

4.2.3 客户端实现

在客户端是一个调用和验证的过程,在遵循WS-Security规范下,设置客户端的用户名和密码,进行SOAP消息身份验。其主要作用是客户端发送用户名和密码,经过Web服务的验证,如果得到认证,则调用其服务,相反如果不能得到消息身份验证,则不可调用服务,从而到达安全控制的目的,具体实现过程如下。

先到UDDI注册中心找到查询Web服务的访问地址,例如:某一月指标信息服务(Month_ Service)对应的服务访问端口是:localhost/AviationWarningManage/Month_ Service.asmx?WSDL,利用Service和Call类分别创建服务对象和访问对象,这与前面JAVA客户端调用.NET服务器端服务方法一样。关键是在调用过程中,要加上SOAP消息验证控制。其关键代码如下。根据系统管理员设置的用户名和密码,每个相调用此Web服务的用户必需拥有它,否则在调用时会出现错误,因为在Web服务中的接口继承类PasswordProviderDoing中,使用了主要方法GetPassword(),该方法是用来密码验证并调用Web服务功能。例如在上面的实例中,由于系统管理员赋给用户名为” 1010627”,调用GetPassword接口返回” h24689”,如果这与JAVA客户提供的是一样的,则JAVA客户端可以调用这个Web服务,相反则抛出异常。从而说明只有经过正确的SOAP消息验证才能调用对应的Web服务。

5 小结

以民航异构系统为应用集成的范例,根据提出应用集成方案,结合民航异构系统需求特点和Web服务功能,扩充了民航私有UDDI注册中心,对相应的程序接口进行服务授权设置;就服务的安全性调用等进行了设计和实践,实现了基于Web服务的应用集成,同时,在应用集成过程中,根据民航自身的安全特点,以WS-Security规范为基础,结合Web服务授权和SOAP消息身份验证二层安全控制策略,验证的集成方案的有效性,并提高了集成过程中的安全性能。

参考文献:

[1] 高曙,王群,罗帆.民航机务维修差错及其预警专家系统构建[J].武汉理工大学学报:交通科学与工程版,2007,33(1):92-95.

[2] 蔡月茹,柳西玲.Web Service基础教程[M].北京:清华大学出版社,2005:4-15.

[3] 使用WSDL 部署 Web 服务[EB/OL]./developerworks/cn/ webservices/ws-intwsdl/part2/,2002.

[4] Kurt Cagle.XML高级开发指南[M].周生炳,肖伟,译.北京:电子工业出版社,2001:10-16.

[5] 芮雄健,王忠民.UDDI的原理与实现[J].计算机工程与设计,2005,26(6):1602-1603.

[6] 孙波,秦秀磊,廖均勇.基于Web服务的教育资源库集成技术及实现[J].计算机应用,2007(27):222-223.

[7] 柴晓路,梁宇奇.Web Services技术、架构和应用[M].北京:电子工业出版社,2003:19-23.

[8] Bob Atkinson,Giovanni Della-Libera,Satoshi Hada,etc[EB/OL].Web Services Security(WS-Security)./en-us/library/ms951257.aspx,2002.

上一篇:简述“一次性密码”身份验证 下一篇:基于SAN架构的数据存储和备份系统