基于WCF的分布系统安全模型研究与应用

2015-06-01 10:40:44刘曦
计算机与网络 2015年18期
关键词:令牌消息声明

刘曦

(四川省电力公司,四川 成都 610041)

基于WCF的分布系统安全模型研究与应用

刘曦

(四川省电力公司,四川 成都 610041)

1 引言

在企业内、外部各种软件系统的建立过程中,利用面向服务架构技术[1](Service-Oriented Architecture,SOA)构建了多种分布式的松散耦合系统。SOA技术能够最大限度的利用现有软件资源,整合业务和扩展功能。Windows通讯开发平台[2]

(Windows Communication Foundation,WCF)是由微软开发的一系列支持数据通信的应用程序框架。在企业级应用中,使用WCF实现基于SOA架构的分布式系统,能够更好的利用WCF的灵活性,对业务层进行封装,并发布为Web服务。

在对企业内办公自动化软件(Office Automation,OA)与统一通信系统(Unified Communication,UC)进行融合的过程中,利用了SOA技术构建了分布式应用融合平台,这其中如何确保系统安全是面临的主要问题之一。WCF提供了一个多功能可扩展的安全模型,可用于解决分布式系统中包括消息的传输与使用,用户认证与服务授权等在内的系统安全问题,将WCF的安全模型应用于分布式应用系统中,有效地提供了企业级系统安全。

2 WCF安全机制

2.1 Web服务安全

SOA架构的技术基础是简单对象访问协议[3](Simple Object Access Protocol,SOAP)。第一代Web服务发布时,SOAP消息并没有消息加密和防篡改机制,安全操作完全交由传输层负责。HTTP/HTTPS协议的安全功能被用来验证用户身份和保证消息安全[4]。但是,仅由传输层提供的安全措施,导致了Web服务的实现局限于传输层,这削弱了SOAP协议的平台独立性。为了使Web服务能够承载更多功能,万维网联盟(World Wide Web Consortium,W3C)制定了Web服务规范WS-*,其中WS-Security在消息级别上提供了对Web服务的保护,在安全功能上扩展了SOAP协议。WCF在.NET平台中自定义实现了WS-*规范的Web服务协议栈,在传输级别和消息级别提供了相应的安全机制。

2.2 传输安全

传输安全是指利用不同传输协议的安全功能,保证消息发送者和接受者之间的通信安全。通常使用安全套接字(Security Socket Layer,SSL)和传输层安全(Transport Layer Security,TLS)的组合,利用加密技术和数字签名技术保证Web服务消息的内容。传输安全将所有的验证机制绑定到传输实现上,不利于消息加密算法的扩展,同时SSL/TLS仅提供点对点的安全,当消息离开传输层后不再安全。

2.3 消息安全

消息安全使用WS-Security规范,在SOAP消息上确保消息的保密性和完整性,并完成身份验证。在消息安全中,所有与安全有关的元数据,如数字签名、加密的元素和密钥等,都是以自包含的形式出现在SOAP消息中。消息安全与传输安全最大的区别在于,消息在离开传输层后不会破坏消息的安全性。

3 WCF验证模型

3.1 联合验证

在利用WCF技术实现的分布式系统中,通常将用户验证和授权功能实现为Web服务,在调用Web服务时,需要验证用户身份和进行授权判断。验证不仅包括对客户端的验证,有时也需要对服务进行验证。在WCF中的验证通常是指客户端与服务端的相互验证,常用方式为联合验证[5,6],即通过第三方安全令牌服务(Security Token Service,STS)对服务调用者验证,验证通过后颁发携带着调用者身份信息的安全令牌。STS本质上是一个WCF服务的实现。STS根据WS-Trust规范来颁发安全令牌,并向客户端提供了4个操作:颁布、验证、更新和取消,分别用于请求一个新的安全令牌、验证一个现有令牌、更新一个过期令牌和取消一个不再使用的令牌。STS将Web服务从各种验证方式和证书类型中分离出来,降低了系统和服务之间的耦合度。

3.2 域内验证

当客户端、服务和STS都在一个信任边界之内时,由三者构成一个信任域,在一个信任域内验证过程如图1所示。

图1 STS域内验证模型

在STS域内验证模型中,客户端首先向STS请求安全令牌(Request Security Token,RST),RST消息中包含了客户端凭证,用于验证客户端以及保护消息内容;然后,STS收到RST消息后,验证客户端凭证。如果验证通过,则STS根据客户端凭证建立一个会话密钥和一个新的安全令牌,其中通过Web服务的密钥对会话密钥加密后生成安全令牌。将会话密钥和安全令牌插入到请求安全令牌响应(Request Security Token Response,RSTR)中返回给客户端。客户端收到RSTR消息后提取会话密钥和安全令牌,将安全令牌作为请求Web服务消息的客户端证书,并使用会话密钥保护消息;最后,Web服务收到调用服务请求后,验证客户端证书中的安全令牌是否有效,提取会话密钥,用会话密钥核实消息保护。如果Web服务验证通过,则执行服务操作,并把操作结果返回给客户端。

3.3 域间验证

当存在多个信任域时,客户端希望请求其他信任域内的服务时,需要在不同域中同时运行的STS之间建立信任关系,如图2所示。2个域中运行的STS之间存在信任关系,域A中客户端从本域中的STS处取得安全令牌,并利用域A的安全令牌访问域B的STS并获得一个域B的安全令牌;从而域A中的客户端利用域B的安全令牌请求域B中公开的服务。对于客户端而言,STS与STS之间的处理是透明的,客户端仅需在本信任域STS处验证,就可以跨域访问服务,从而实现了单点登录的功能。

图2 STS域间验证模型

4 WCF授权策略

WCF提供了2种实现授权的方法,基于用户角色和基于声明。基于用户角色的授权方式利用角色来赋予用户进行系统操作的适当权限和访问资源的许可。在WCF中,用户身份和对应的角色分别由IIdentity和IPrincipal接口来表示,包括了对用户身份的验证和对用户角色的验证。

在某些情形下,基于角色的授权不足以建模和授权数据。WFC提供了基于声明的授权方式。声明是在特定场景下描述某个对象(客户端或用户)身份的信息,或是作用于某个特定资源的一个动作。在WCF中,会把通过验证的用户凭证和安全令牌映射到一组声明上,并将这些声明传递给请求的服务。这些声明不仅包含客户端身份信息,同时还包含了服务执行验证判断所需要的信息。

5 安全模型的应用

在将办公自动化软件OA系统与统一通信UC系统进行融合时,使用了SOA技术架构,采用WCF的安全模型进行安全验证和服务调用,能够更加安全有效地利用现有资源,并具有更高灵活性和扩展性。OA系统主要功能包括人事管理、客户管理、采购管理、质量管理、考勤管理、会议申请、物料申请和财务管理等;UC系统主要功能包括通讯录服务、短信服务、语音与视频呼叫服务、即时消息服务和邮件服务等。为了有效的地融合2个系统,除了构建各个服务,还需要对2个系统的用户管理和访问授权模块进行重构,使之适应分布式系统的安全访问模型。融合后的系统基本框架示意,如图3所示。

图3 系统框架示意图

在OA系统和UC系统建立了各自的STS服务,并且在2个STS服务之间建立信任关系。客户端根据被调用服务所在的信任域(OA系统或UC系统),到对应的STS服务请求会话安全令牌,携带安全令牌调用之前请求的服务。当访问跨域服务时,客户端会先到本域的STS处进行验证并得到安全令牌,之后根据本域的安全令牌访问建立信任关系的其他域STS获得可访问最终服务的令牌,并访问最终服务。

⑴安全模型的选择

在OA系统与UC系统融合时,为了保持服务和消息的跨平台特性,采用了消息安全模型;同时,由于涉及到2个系统,使用联合安全验证模型,保证系统的扩展性。在WCF提供的丰富可配置环境中,使用预定义的安全配置模式wsFederationHttpBinding,就可以指定使用消息安全和联合验证模式,从而建立相应的安全策略,并在服务运行时执行这些策略。在服务端配置wsFederationHttpBinding绑定,公开收到安全令牌的服务联合端点。

在Security元素中的Mode属性设置为Message,表示使用消息安全模式验证客户端和保护消息。IssuedTokenType表示使用的安全令牌类型为SAML1.1,因此STS服务必须支持颁布SAML1.1令牌。

⑵基于声明的授权配置

在OA系统和UC系统的STS服务中,定义了针对不同服务和操作的各类声明。在ClaimTypeRequirements元素中,服务端仅配置当前服务进行授权所需的声明类型是否必须,如用户名称声明和用户权限声明。在IssuerMetadata元素中指明安全令牌颁发机构的元数据地址,客户端可据此发现STS端点。

⑶服务端的授权验证

为了便于管理和维护,采用了集中化授权逻辑,分别定义了OA信任域的授权管理器OaAuthorizationManager类和UC信任域的授权管理器UcAuthorizationManager类,二者继承自抽象类ServiceAuthorizationManager,并重写了方法CheckAccessCore。CheckAccessCore方法接受WCF操作上下文参数,对每个传入请求集中验证声明信息,判断是否允许访问。

⑷构建OA_STS和UC_STS

在实现OA系统和UC系统的STS服务时,使用Windows身份验证基础架构(Windows Identity Foundation,WIF),提供了支持基于声明的安全模式的架构。分别定义了OA系统STS服务OaSecurityTokenService类和UC系统STS服务UcSecurityTokenService类,二者继承自抽象类SecurityTokenService,定义了STS的关键功能。通过构造函数接受STS配置实例,来指定特定功能;通过GetScope方法来验证一个安全令牌是否可以提供给客户端需要使用的服务,并提供2个证书,用以加密和签名此令牌;通过GetOutputClaimsIdentity方法为生成的安全令牌提供声明,最后公开实现的OA_STS和UC_STS服务。

⑸生成客户端代理

最后,使用SvcUtil工具或者添加服务引用的方式生成客户端代理类,并在客户端配置中可以看到2个绑定ws2007FederationHttpBinding、ws2007HttpBinding。前者用于确定与最终服务的通信参数,后者用于确定与相应STS服务的通信参数。

6 结束语

WCF完全遵循了WS-*的标准,利用WCF的安全模型能够有效地解决的分布式系统中传输和消息安全、验证和授权策略等问题,同时不损失系统的扩展性。此外,WCF技术还提供对事务、安全和编码等的统一管理,协调了各服务器之间的系统操作。因此,在办公自动化软件OA系统与统一通信UC系统进行融合时,使用WCF技术构建分布式系统不失为一个理想的选择。

[1]王建伟.基于Web Services的SOA架构设计方法的研究[D].大连:大连海事大学,2006.

[2]郑文轩.基于WCF的分布式程序的研究和实现[D].西安:西安电子科技大学,2012.

[3]孟维然.SOAP协议的安全性研究与应用[D].沈阳:沈阳工业大学,2005.

[4]李俊旭,常朝稳.Webservice安全通信模型的研究[J].网络安全技术与应用,2009(2):28-30.

[5]王洪添,张晓磊,于治楼.基于WIF的身份联合管理的研究[J].信息技术与信息化,2010(3):32-33,70.

[6]刘志强.云计算中基于声明的访问控制研究[D].西安:西安电子科技大学,2013.

Research and Application of Security Model of WCF-based Distributed System

在分布式系统中安全方面的挑战是面临的主要问题之一,WCF提供了一个多功能可扩展的安全模型,提供了消息级别和服务级别的安全基础设施。介绍了WCF的安全机制,分析和建立了WCF的验证模型和授权策略,并以办公自动化软件与统一通信系统结合为例,分析和研究了如何利用WCF安全模型扩展并实现安全可靠的面向服务应用程序。

WCF SOA STS安全模型信任域

LIU Xi
(State Grid Sichuan Electric Power Company,Chengdu Sichuan 610041,China)

In distributed system,the security challenge is one of the main problems to be faced.WCF provides a multi-functional expandable security model,with message class and service class security infrastructure.Firstly,the security mechanism of WCF is introduced;then the WCF verification model and authorization policy are analyzed and constructed;finally by taking the combination of office automation software and united communication system as an example,the topic of how to use WCF security model to expand and achieve secure and reliable service oriented application program is analyzed and developed.

WCF;SOA;STS;security model;trust domain

TP311

A

1008-1739(2015)18-57-4

定稿日期:2015-08-26

猜你喜欢
令牌消息声明
本刊声明
本刊声明
中国德育(2022年12期)2022-08-22 06:16:46
称金块
一张图看5G消息
基于路由和QoS令牌桶的集中式限速网关
本刊声明
本刊声明
动态令牌分配的TCSN多级令牌桶流量监管算法
计算机工程(2018年8期)2018-08-17 00:26:54
消息
中国卫生(2014年12期)2014-11-12 13:12:26
消息
中国卫生(2014年8期)2014-11-12 13:00:50