WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发

Posted on 2009-03-07 17:33 Frank Xu Lei 阅读(1517) 评论(2)   编辑 收藏 网摘 所属分类: WSE3.0构建Web服务安全, SOA and EAI

    继WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理之后,今天我们继续WSE3.0构建Web服务安全系列文章的第3节:WSE3.0策略配置与实例开发.本节主要讲解如何通过WSE3.0策略配置工具实现Web服务安全,本在全文附带代码讲解。本节结构为1.WSE3.0策略工具介绍2.如何使用WSE3.0策略工具3.代码实现与分析4.总结。最后附上代码供大家下载。

      通过上2节的介绍我们知道:WSE 3.0是和Web Service整合在一起。通过对Web Service服务消息模型的扩展实现安全加密机制。 WSE 3.0中,客户端请访问Web服务是通过客户端生成的一个Proxy类来完成。当客户端向服务端发送Web Service调用请求的时候,WSE 3.0扩展框架会对消息进行一些处理,包括过滤、加密、签名等。而服务器端Web Service在收到客户端的调用请求后,WSE 3.0扩展框架同样会先对SOAP消息进行解密、签名的验证等操作。如果合法则相应用户请求,否则就抛出服务不可用异常给客户端。这些工作都是由WSE 3.0扩展框架自动完成解密、签名的验证等操。

      WSE 3.0提供的安全机制保证了Web Service的安全。同时实现安全的方式也有两种,一种就是通过的WSE3.0策略工具根据应用系统的安全规格给服务端和客户端设置相应的安全策略。其次就是用代码实现具体的安全策略相同的功能。第一种方式方便快捷,通过简单的设置即可完成Web服务的安全。后者用户可以定义更具体的代码来扩展自己的安全策略,相对来说需要自己写策略代码。不论采用那种方式,我们都可以利用WSE 3.0提供的安全机制守卫我们的Web服务。
      另外WSE 3.0也提供了其他的一些特性,例如多宿主托管Web服务、用户自定义的安全断言、对消息传输优化机制MTOM的支持、使用TCP传输控制协议传递SOAP消息等。我们也可以根据实际的系统需求来利用WSE 3.0提供的新特性,优化我们的系统。第一节中我们也提到在 Web Serivice项目中启用 WSE 3.0 的一个重要原因,就是要利用它的策略管道扩展性模型。因为WSEWSE 3.0 使您能够插入对进入和离开终结点的 SOAP 消息执行预处理和后续处理的筛选器,它提供的功能可以创建能够与WSEWSE 3.0 提供的现有声明性安全策略相结合的自定义声明性策略。下面我们来介绍一下WSE3.0配置工具,以及如何配置安全策略。

【1】WSE3.0策略工具介绍

    首先我们来介绍一下这个工具。WSE3.0具体的安装细节已经在第一节WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发中做了介绍。当我们安装完毕会在新建的Web Service Vsual Studio 2005 项目右键菜单看到WSE 3.0设置。打开以后会出现配置工具的具体界面。如图:

     它包括的通用、安全、路由、策略、令牌问题、调试、消息7个选项卡。

1)通用选显卡包括是否在项目里支持WSE3.0和WSE3.0 SOAP消息工厂。

2)安全选显卡可以设置用户令牌管理类库,以及证书和消息的有效时间。

3)路由选项卡可以设置消息中介者SoapHttpRouter对进入和传出的消息加密。

4)策略选项卡可以更具安全需求对服务端和客户端设置特定的安全策略,策略会存储在相应的安全策略文件里。

5)令牌问题选项卡可以设置令牌的TTL有效存活时间。以及是否使用安全上下文令牌。

6)调试选项卡可以设置项目的具体调试的细节。消息输入和输出的的文件以及是否舒服错误信息等。

7)消息选项卡主要是对消息优化传输机制MTOM的一些设置。

【2】如何使用WSE3.0策略配置工具

     以上简单介绍了WSE3.0策略配置工具,下面我们来具体介绍主要选项的具体使用过程。

1)如果用户选择了项目里支持WSE3.0和WSE3.0 SOAP消息工厂。

     会在相应的配置WebConfig文件里自动添加一下信息。

<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 
  <webServices>
   <soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </webServices>
 </system.web>

     配置文件更新完毕代表刚才的设置成功。

2)用户可以在这里设置安全选显卡可以设置用户令牌管理类库,以及证书和消息的有效时间。如图

   这里设置的UsernameTokenManager类库为我们自己定义的类库,设置时要正确填写DLL的名称、命名空间、类的信息。完成以后会在配置文件里生成代码。

    <security>
      <securityTokenManager>
        <add type="MyUsernameTokenManager.MyUsernameTokenManager, UsernameTokenManagerClassLib" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken" />
      </securityTokenManager>
    </security>

3)路由选项卡可以设置消息中介者SoapHttpRouter对进入和传出的消息加密,这里就不做详细的介绍,具体大家可以参考MSDN。

4)策略选项卡可以更具安全需求对服务端和客户端设置特定的安全策略。用户可以决定是否使用策略和策略的管理。

服务端和客户端添加策略的文件类似,当用户选择添加策略文件的时候,会启动一个策略配置向导,你输入策略名称后,就可以继续下一步。如图

用户可以选择可以给客户端还是服务端进行策略设置,客户端认证方法包括4种。

A.Anonymous 匿名访问,不需要提供用户名和密码。服务器默认客户端请求已经进行加密。
B.Username 需要包含用户名和密码的Usernametoken的安全令牌。
C.Certificate 需要提供服务端认证的X.509证书。
D.Windows 需要提供服务端认证的KerberosT令牌,此方式不属于WS-*安全协议的范畴,使用Windows Kerberos 认证机制。

如果在向导中选择消息传输保护,还需要设置安全需求比如是否支持WS-*安全协议1.1扩展、签名、加密等策略,如图:

A.None :SOAP消息应当在传输层依赖安全套接层协议(SSL,Security Socket Layer)提供保护,WSE在传输层不提供保护。
B.Sign-Only :客户端需要对SOAP消息签名。保证消息的唯一性。
C.Sign and Encrypt:WSE对SOAP消息签名,且对SOAP消息体加密,来保证消息安全。
D.Sign, Encrypt, Encrypt Signature:WSE对 SOAP消息必须签名、消息体签名加密 、对签名进行加密。

     使用匿名方式生成的策略是

  <policy name="ServerPolicy">
    <usernameOverTransportSecurity />
    <requireActionHeader />
  </policy>

表示只依赖于传输层安全机制,但是这个安全级别比较低。消息容易被截获和破译。

5)令牌问题选项卡可以设置令牌的TTL有效存活时间。以及是否使用安全上下文令牌。

 令牌生存期为30秒,设置后对应的配置文件节点为

    <tokenIssuer>
      <ttlInSeconds value="30" />
    </tokenIssuer>

6)调试选项卡可以设置项目的具体调试的细节。消息输入和输出的的文件以及是否舒服错误信息等。

具体的设置后生成的配置节点如下:

    <diagnostics>
      <trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
      <detailedErrors enabled="true" />
    </diagnostics>

这样可以输入错误消息,便于调试。

7)消息选项卡主要是对消息优化传输机制MTOM的一些设置。

 如果使用消息优化机制,可以设置相应的选项,

    <messaging>
      <mtom clientMode="On" serverMode="always" />
    </messaging>

     这样表示一直使用消息优化传输机制。

【3】代码实现与分析

      通过上面对WSE3.0配置工具的消息介绍,现在我们来使用WSE3.0配置工具来进行简单的项目配置。

     在介绍代码实现以前,先要强调一点,WSE3.0安全机制的工作原理,比如签名。我们在使用策略工具进行设置,对消息消息签名,会要求你提供一个X509证书,也就是服务端认证的公钥。来对消息加密。服务端配置的策略的同时会在服务端提供对应的私钥进行解密,我们要做的就是提供认证的证书和设置安全策略文件。加密和解密验证的过程由WSE3.0来为我们完成。下面我们还是以上次的代码的基础上,来演示我们的具体WSE3.0策略工具的配置过程。使用证书的加密和解密的代码我会给出讲解,但是就不会给具体的实现了。(XP无法安装证书服务机构,自己制作的证书需要认证通过后,才能使用)几种方式的配置有类似之处,大家有兴趣可以查阅MSDN的资料。或者留言交流。

1)服务端:服务器端策略配置使用Username 方式,需要客户端提供用户名和密码的Usernametoken的安全令牌。具体策略文件对应节点如下:

  <policy name="ServerPolicy">
    <usernameOverTransportSecurity />
    <requireActionHeader />
  </policy>

服务端代码需要做相应的更改,添加使用策略的属性标识Microsoft.Web.Services3.Policy("ServerPolicy")]。具体代码如下:

Code

 

2)客户端:

客户端与服务端配置相对应的安全策略。即提供用户名和密码的Usernametoken的安全令牌。策略相同:

  <policy name="ClientPolicy">
    <usernameOverTransportSecurity />
    <requireActionHeader />
  </policy>

 客户端的测试代码做做了相应更新。 需要设置代理策略,语句是serviceProxy.SetPolicy("ClientPolicy");具体代码如下

Code


这个表示服务端和客户端使用了相同的安全策略。客户端按照策略把用户名和密码封装到UsernameToken里,添加到Soap消息里,发送给服务端。服务端根据策略解析Soap消。反序列化UsernameToken。然后进行用户名和密码的安全验证。

3)运行演示:

【4】总结

      另外如果用户服务安全使用签名,加密,加密使用到证书等安全策略,可以使用WSE3.0配置工具设置具体策略到wse3policyCache.config文件中,来实现系统的安全。此外也可以使用WSE3.0提供的类库来利用代码实现。代码如下:

            //如下代码实现了和 wse3policycache.config一样的策略功能
            UsernameForCertificateAssertion assertion = new UsernameForCertificateAssertion();

            //设置 X509证书到安全断言.
            assertion.X509TokenProvider = new X509TokenProvider(StoreLocation.CurrentUser,
                                                                StoreName.AddressBook,
                                                                "CN=WSE2QuickStartServer",//证书
                                                                X509FindType.FindBySubjectDistinguishedName);
            //设置签名选项。
            assertion.Protection.Request.SignatureOptions = SignatureOptions.IncludeAddressing |
                                                 SignatureOptions.IncludeTimestamp |
                                                 SignatureOptions.IncludeSoapBody;
            //加密消息主体
            assertion.Protection.Request.EncryptBody = true;

    以上就是对WSE3.0配置工具的使用过程的详细介绍。我们了解了整合WSE3.0配置工具相关的概念和使用方法,以及使用WSE3.0配置工具对具体的项目进行安全设置的实现过程。希望通过本文的介绍,大家能对WSE3.0实现Web服务的安全有个新的了解。基础知识和概念请参考本系列的前两节。在调试WSE3.0安全项目的时候遇到的错误以及解决办法我也放到博客的开发常见错误解决系列文章里。最后放上本文的实现代码/Files/frank_xl/WSE3UserNameTokenWithPolicyCodedByFrankXuLei.rar,供大家参考。因为最近比较忙,所以本节文章准备时间花费了一周,希望能对大家的学习有点帮助,也欢迎留言交流。谢谢~~
 


 

老徐的博客

【作者】:Frank Xu Lei

【地址】:http://www.cnblogs.com/frank_xl/archive/2009/03/04/1403461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Microsoft WSE 2.0 SP3是微软的一个安全性和互操作性解决方案,它提供了用于开发和部署Web服务工具和方法。安装Microsoft WSE 2.0 SP3的步骤如下: 1. 下载安装程序:首先,您需要从微软官网或其他可靠来源下载Microsoft WSE 2.0 SP3的安装程序。 2. 运行安装程序:找到下载的安装程序文件,并双击运行它。它会打开安装向导。 3. 阅读许可协议:在安装向导中,您将看到许可协议的内容。请阅读并接受许可协议,然后点击"下一步"继续安装。 4. 选择安装位置:接下来,您需要选择WSE 2.0 SP3的安装位置。您可以选择接受默认位置,或自定义安装位置。点击"下一步"继续。 5. 完成安装:在最后一步中,您可以选择是否创建桌面快捷方式,并点击"安装"开始安装过程。 6. 等待安装完成:安装过程可能需要一段时间,具体时间取决于您的计算机性能和网络速度。请耐心等待直到安装完成。 7. 检查安装:安装完成后,您可以打开所安装的目录,验证Microsoft WSE 2.0 SP3是否已成功安装。 总结: 安装Microsoft WSE 2.0 SP3的步骤包括下载安装程序、运行安装程序、阅读许可协议、选择安装位置、完成安装和检查安装。请确保在安装过程中保持稳定的互联网连接,并根据安装向导的指示进行操作。希望这些步骤对您有帮助! ### 回答2: Microsoft WSE 2.0 SP3是微软提供的一个Web服务扩展,用于增强和加强Web服务安全性和可靠性。要安装Microsoft WSE 2.0 SP3,可以按照以下步骤进行操作: 首先,确保已经满足安装要求。Microsoft WSE 2.0 SP3只能安装在支持Microsoft .NET Framework 2.0的操作系统上。因此,在安装之前,请确保您的计算机已经安装了.NET Framework 2.0或更高版本。 其次,下载Microsoft WSE 2.0 SP3安装程序。您可以在微软的官方网站上找到安装程序的下载链接。下载完成后,双击安装程序运行安装向导。 然后,按照安装向导的指示进行操作。首先,选择安装目录,通常建议使用默认的安装目录。然后,阅读许可协议并同意。接下来,选择要安装的组件。默认情况下,所有组件都会被安装,您也可以根据自己的需要进行选择。最后,点击“安装”按钮开始安装。 安装过程可能会需要一些时间,取决于您的计算机性能和网络速度。安装完成后,您可以看到安装成功的提示信息。此时,您可以关闭安装程序并重新启动计算机。 完成上述步骤后,Microsoft WSE 2.0 SP3将成功安装在您的计算机上。您现在可以在您的项目中使用WSE 2.0 SP3提供的各种强大的安全性和可靠性功能来增强和保护您的Web服务。 需要注意的是,Microsoft WSE 2.0 SP3已经不再支持并且已经过时。微软推荐使用更高版本的Web服务技术和工具,如Windows Communication Foundation(WCF)。因此,在开发新的Web服务项目时,建议使用最新的微软技术来获得更好的性能和功能。 ### 回答3: Microsoft WSE (Web Services Enhancements) 2.0 SP3 是一个为微软开发的 Web 服务提供增强功能的扩展。要安装 Microsoft WSE 2.0 SP3,您可以按照以下步骤进行操作: 1. 首先,确保您的计算机上已安装 .NET Framework 2.0。WSE 2.0 SP3 是构建在 .NET Framework 2.0 上的,所以在安装 WSE 2.0 SP3 之前必须先安装 .NET Framework 2.0。 2. 下载 Microsoft WSE 2.0 SP3 安装程序。您可以在微软官方网站上搜索并下载最新版本的 WSE 2.0 SP3 安装程序或从可信任的第三方软件下载网站获取。 3. 运行下载的安装程序。双击下载的安装程序文件,然后按照安装向导的提示进行操作。请注意,在安装过程中可能需要管理员权限。 4. 阅读并接受许可协议。在安装向导中会显示许可协议的内容。请仔细阅读并理解协议条款,如果同意协议,选择相应的选项继续安装。 5. 选择安装选项。在安装向导中,您可以选择安装 WSE 2.0 SP3 的位置和其他选项。按照自己的需求进行选择,然后继续安装。 6. 等待安装完成。安装程序将复制文件、注册组件和设置配置信息。请耐心等待安装过程完成。 7. 检查安装结果。安装完成后,您可以在计算机的安装目录中找到 WSE 2.0 SP3 的文件和文件夹。您还可以检查计算机的控制面板中是否存在 WSE 2.0 SP3 的相关项。 通过上述步骤,您应该可以成功安装 Microsoft WSE 2.0 SP3。如果在安装过程中遇到任何问题,您可以查阅官方文档或在论坛或社区寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值