科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件增强Web服务2.0编程

增强Web服务2.0编程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文简要介绍 WSE 2.0 的几个主要功能。

作者:佚名 来源:Microsoft 2007年11月17日

关键字: 软件

  • 评论
  • 分享微博
  • 分享邮件
安全策略

  虽然以上讨论的代码与 WSE 1.0 中的代码非常相似,但它具有一个优点:将 Principal 对象与一个令牌关联,可以用来查找某个具体安全令牌的特定属性。这种方法存在的问题在于仍要编写代码来确定应属于管理任务的访问功能。为此,WSE 2.0 提供了创建策略文件支持。

  策略文件基于 WS-Policy 规范,该规范是为允许 Web 服务声明传入消息有关安全性等方面的要求而创建的。如果希望签名或者加密所有或部分消息,WSE 2.0 允许我们控制 Web 服务的用户在消息中使用的安全令牌类别,以及控制对接收消息时限的限制,甚至可以为传入的消息指定角色成员限制。

  以下策略文件说明 Web 服务接收的消息应使用 Kerberos 令牌对消息主体进行签名。

<?xml version="1.0" encoding="utf-8"?>
<policyDocument
xmlns="http://schemas.microsoft.com/wse/2003/06/Policy">
<mappings
xmlns:wse="http://schemas.microsoft.com/wse/2003/06/Policy">
<mapDefault
policy="#policy-5903e02b-9c11-4dc5-8ca0-42d4e9d0bcde" />
</mappings>
<policies
xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
<wsp:Policy
wsu:Id="policy-5903e02b-9c11-4dc5-8ca0-42d4e9d0bcde"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
<wsse:Integrity wsp:Usage="wsp:Required"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:TokenInfo>
<SecurityToken
xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:TokenType>wsse:Kerberosv5ST</wsse:TokenType>
</SecurityToken>
</wsse:TokenInfo>
<wsse:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wsse:MessageParts>
</wsse:Integrity>
</wsp:Policy>
</policies>
</policyDocument>

  policyDocument 根元素有两个子元素:mappings 和 policies。policies 元素含有一个或多个表示特定要求集的 Policy 元素。在示例中,策略包含一个 Integrity 要求,表示该消息需要数字签名。TokenInfo 元素包含关于所需令牌种类的信息,本示例中为 Kerberos 令牌。最后,这一特定完整性要求指出必须签名的文档部分为正文,这是使用 MessageParts 元素指示的。

  policyDocument 的 mappings 部分仅将特定终结点与 policies 部分中的策略关联。本示例不包括特定终结点的任何映射,仅包括单一的默认映射。

  除了实际创建策略文件以外,还需要让 WSE 程序库知道该策略的存在。因此,有必要配置 Web 服务以使用创建的策略文件。为此,需要修改 Web.config 文件。下面的 Web.config 文件给出了为启用 WSE SoapExtension、启用 WSE 配置部分中的处理程序以及添加接收策略缓存而作的更改。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- 添加对配置部分的引用。 请注意,
类型名称要换行以便于阅读,并且不应包含
换行符。-->
<section name="microsoft.web.services"
type="Microsoft.Web.Services.Configuration
.WebServicesConfiguration, Microsoft.Web.Services,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" />
</configSections>
<system.web>

<!-- 为了简洁,删除其他元素 -->

<webServices>
<soapExtensionTypes>
<!-- 添加 WSE SoapExtension。请注意,
类型名称要换行以便于阅读并且
不应包含换行符。-->
<add type="Microsoft.Web.Services
.WebServicesExtension, Microsoft.Web.Services,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
priority="1" group="0" />
</soapExtensionTypes>
</webServices>
</system.web>
<!-- WSE Configuration Section -->
<microsoft.web.services>
<policy>
<receive>
<cache name="policyCache.xml" />
</receive>
</policy>
</microsoft.web.services>
</configuration>

  至此,已将 Web 服务配置成只接受符合 policyCache.xml 文件中策略要求的请求。

  如果需要让管理员为特定的 Web 服务配置策略,我们同样希望对使用 Web 服务的应用程序进行类似配置。总而言之,如果管理员更改策略后我们必须重新生成使用的应用程序,则并没有完全实现配置消息要求时无需重新生成 Web 服务的功能。

  要为使用的应用程序添加该功能来发送符合特定策略的消息,需要本地具有该程序可以使用的策略文件。对于要调用 .asmx Web 服务的 Rock Paper Scissors 对等应用程序,我们只是将 policyCache.xml 文件复制到该可执行程序的工作目录。如同对 Web 服务的处理,将该应用程序配置成使用其 .config 文件中的策略文件(本示例中为 RockPaperScissors.exe.config)。该配置文件如下所示。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- 添加对配置部分的引用。请注意,
类型名称要换行以便于阅读,并且不应包含
换行符。-->
<section name="microsoft.web.services"
type="Microsoft.Web.Services.
Configuration.WebServicesConfiguration,
Microsoft.Web.Services, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<microsoft.web.services>
<policy>
<send>
<cache name="policyCache.xml" />
</send>
</policy>
</microsoft.web.services>
</configuration>

  对等应用程序将通过发送符合 policyCache.xml 文件中的要求的消息与 Web 服务进行通信。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章