论文部分内容阅读
摘要:Web Services Enhancements(WSE)策略框架提供了一种机制,以描述Web服务需要执行的约束和要求。文章将介绍WSE中策略框架的工作方式,讨论WSE3.0支持的安全方案。
关键词:WSE;策略框架;Web服务;安全
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31542-01
Secure Web Services Through The Policy Framework In WSE
HUA Hui,CHEN Jia-hong
(Jinling Institute of Technology,Nanjing 210001,China)
Abstract:The Web Services Enhancements(WSE) policy framework provides a mechanism to describe the constraints and requirements that need to be enforced for a Web service. In this paper, I will describe how the policy framework works in WSE. and discuss security scenarios supported by WSE 3.0.
Key words:WSE;Policy Framework;Web services;Security
1 引言
Web服务是通过HTTP执行远程方法调用的一种新方法,是分布式计算的重要标准,也是未来软件开发的技术趋势。通过Web服务,应用软件之间可以实现跨平台、跨编程语言的联接和互操作。Web 服务基于一套描述软件通信语法和语义的核心标准,其中,XML 提供表示数据的通用语法;简单对象访问协议 (SOAP) 提供数据交换的语义;Web 服务描述语言 (WSDL) 提供描述 Web 服务功能的机制。其他规范统称为 WS-* 体系结构,其中的WS-Security 规范用于定义Web 服务安全性方面的功能。SOAP是基于XML的 Web服务的通信协议,定义了机器间通信的消息传送格式,SOAP消息采用 XML 格式,在Web服务提供者和消费者之间传送的消息就是SOAP消息。Web服务基于消息的体系结构和跨越信任边界的异构环境需要我们处理消息级的安全问题,以支持跨平台的互用性和通过多个中间节点进行路由。在默认情况下,SOAP消息以明文方式传递。因此保护SOAP 消息的安全就保护了Web服务消息级的安全。
为了构建安全的Web 服务,需要了解相关的威胁。如今,针对 Web 服务的最大威胁主要有:未授权访问、参数操作、网络侦听、配置数据泄漏和消息重放。因此,在设计Web服务时,我们需要重点考虑的安全性要求有:身份验证要求、私密性和完整性要求、资源访问标识和代码访问安全。
Microsoft 发布了Web 服务安全性开发工具包(Web Services Enhancements) 的3. 0 版(WSE 3. 0) ,主要目的就是为开发人员提供用来开发符合WS - Security 规范的消息级安全性的解决方案。因此,本文主要阐述如何使用WSE3.0的策略框架中提供的安全断言,实现上述安全性要求中的消息私密性、完整性和身份验证。
2 WSE策略框架
WSE 策略框架描述了Web 服务进行通信的约束和要求。在Web服务的客户端和服务之间交换任何消息之前,策略的一个实例被转换成运行时组件,这个过程称为策略编译。这些组件在消息发送方和接收方应用和执行策略中的要求。
一个策略包含一个有序的策略断言列表。每个策略断言定义一个对 Web 服务的要求。由每个策略断言生成的筛选器负责对进入和离开终结点的SOAP 消息进行截获和处理,来执行对Web 服务的要求。策略断言生成筛选器遵循策略中断言的顺序,而管线表示了这个输入筛选器和输出筛选器的集合。图1显示了策略编译在管线中按照SOAP筛选器的顺序表示成策略断言的要求和顺序。
图1 通过SOAP筛选器的断言实现的策略
3 策略的定义和应用
WSE中,策略的定义方式有两种:在代码中定义和在外部XML文件中定义。在代码中定义策略时,可以完全控制对使用服务时需要满足的要求的定义。但是,应用程序发布之后,我们就不能再更改这些策略定义了。
相反,当策略要求不能固定时,我们就可以在外部XML文件中声明策略。这样,我们就可以在代码中只提供应用程序的逻辑,策略的要求可以随时改变,因此实现了程序逻辑和策略的相互独立。这种方式具有更大的灵活性,本文即采用这种方式来定义一个策略,在XML文件wse3policy.config中有这样的定义:
为了将定义好的策略应用于web服务或服务代理,我们首先需要在该应用程序的配置文件中提供包含策略声明的XML文件的名称,如下所示:
然后,如果我们要将该策略应用到web服务中,可以在该需要使用策略的web服务中定义一个policy属性,如下所示:
[WebService(Namespace= "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Policy("ServerPolicy")]
public class Service : System.Web.Services.WebService
{public Service () {
[WebMethod]
public string HelloWorld() {
return "Hello World";}}
如果我们要将策略应用于客户端上的服务代理,我们可以调用服务代理上的SetPolicy方法,如下所示:
ServiceWse sw = new ServiceWse();
sw.SetPolicy("ClientPolicy");
由上可以看出,服务端和客户端使用了不同的策略,同时,他们的策略应用的方式也存在差别。
4 安全断言
在WSE中共提供了六种安全断言,每一个安全断言就是一组预先定义好的安全操作所组成的安全策略,每个策略均设法提供验证、消息完整性和保密性,但每个策略实现这些安全目标的方式不同。下面阐述每个安全断言的应用情景:
关键词:WSE;策略框架;Web服务;安全
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31542-01
Secure Web Services Through The Policy Framework In WSE
HUA Hui,CHEN Jia-hong
(Jinling Institute of Technology,Nanjing 210001,China)
Abstract:The Web Services Enhancements(WSE) policy framework provides a mechanism to describe the constraints and requirements that need to be enforced for a Web service. In this paper, I will describe how the policy framework works in WSE. and discuss security scenarios supported by WSE 3.0.
Key words:WSE;Policy Framework;Web services;Security
1 引言
Web服务是通过HTTP执行远程方法调用的一种新方法,是分布式计算的重要标准,也是未来软件开发的技术趋势。通过Web服务,应用软件之间可以实现跨平台、跨编程语言的联接和互操作。Web 服务基于一套描述软件通信语法和语义的核心标准,其中,XML 提供表示数据的通用语法;简单对象访问协议 (SOAP) 提供数据交换的语义;Web 服务描述语言 (WSDL) 提供描述 Web 服务功能的机制。其他规范统称为 WS-* 体系结构,其中的WS-Security 规范用于定义Web 服务安全性方面的功能。SOAP是基于XML的 Web服务的通信协议,定义了机器间通信的消息传送格式,SOAP消息采用 XML 格式,在Web服务提供者和消费者之间传送的消息就是SOAP消息。Web服务基于消息的体系结构和跨越信任边界的异构环境需要我们处理消息级的安全问题,以支持跨平台的互用性和通过多个中间节点进行路由。在默认情况下,SOAP消息以明文方式传递。因此保护SOAP 消息的安全就保护了Web服务消息级的安全。
为了构建安全的Web 服务,需要了解相关的威胁。如今,针对 Web 服务的最大威胁主要有:未授权访问、参数操作、网络侦听、配置数据泄漏和消息重放。因此,在设计Web服务时,我们需要重点考虑的安全性要求有:身份验证要求、私密性和完整性要求、资源访问标识和代码访问安全。
Microsoft 发布了Web 服务安全性开发工具包(Web Services Enhancements) 的3. 0 版(WSE 3. 0) ,主要目的就是为开发人员提供用来开发符合WS - Security 规范的消息级安全性的解决方案。因此,本文主要阐述如何使用WSE3.0的策略框架中提供的安全断言,实现上述安全性要求中的消息私密性、完整性和身份验证。
2 WSE策略框架
WSE 策略框架描述了Web 服务进行通信的约束和要求。在Web服务的客户端和服务之间交换任何消息之前,策略的一个实例被转换成运行时组件,这个过程称为策略编译。这些组件在消息发送方和接收方应用和执行策略中的要求。
一个策略包含一个有序的策略断言列表。每个策略断言定义一个对 Web 服务的要求。由每个策略断言生成的筛选器负责对进入和离开终结点的SOAP 消息进行截获和处理,来执行对Web 服务的要求。策略断言生成筛选器遵循策略中断言的顺序,而管线表示了这个输入筛选器和输出筛选器的集合。图1显示了策略编译在管线中按照SOAP筛选器的顺序表示成策略断言的要求和顺序。
图1 通过SOAP筛选器的断言实现的策略
3 策略的定义和应用
WSE中,策略的定义方式有两种:在代码中定义和在外部XML文件中定义。在代码中定义策略时,可以完全控制对使用服务时需要满足的要求的定义。但是,应用程序发布之后,我们就不能再更改这些策略定义了。
相反,当策略要求不能固定时,我们就可以在外部XML文件中声明策略。这样,我们就可以在代码中只提供应用程序的逻辑,策略的要求可以随时改变,因此实现了程序逻辑和策略的相互独立。这种方式具有更大的灵活性,本文即采用这种方式来定义一个策略,在XML文件wse3policy.config中有这样的定义:
为了将定义好的策略应用于web服务或服务代理,我们首先需要在该应用程序的配置文件中提供包含策略声明的XML文件的名称,如下所示:
然后,如果我们要将该策略应用到web服务中,可以在该需要使用策略的web服务中定义一个policy属性,如下所示:
[WebService(Namespace= "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Policy("ServerPolicy")]
public class Service : System.Web.Services.WebService
{public Service () {
[WebMethod]
public string HelloWorld() {
return "Hello World";}}
如果我们要将策略应用于客户端上的服务代理,我们可以调用服务代理上的SetPolicy方法,如下所示:
ServiceWse sw = new ServiceWse();
sw.SetPolicy("ClientPolicy");
由上可以看出,服务端和客户端使用了不同的策略,同时,他们的策略应用的方式也存在差别。
4 安全断言
在WSE中共提供了六种安全断言,每一个安全断言就是一组预先定义好的安全操作所组成的安全策略,每个策略均设法提供验证、消息完整性和保密性,但每个策略实现这些安全目标的方式不同。下面阐述每个安全断言的应用情景: