使用 Oracle Web Services Manager 保护异构系统

作者:Ronald van Luttikhuizen 和 Jens Peters

本案例研究探讨了如何运用 Oracle Web Services Manager 保护 Oracle Service Bus 公开的 Web 服务与用 Microsoft .NET 和 Silverlight 构建的员工门户之间的交互。

下载
download-icon13-1 Oracle Web Services Manager
download-icon13-1 Oracle Service Bus

还记得 Web 服务新推出时那段激动人心的日子吗?从最初起,Web 服务便承诺提供与底层平台和工具集之间“真正”的互操作性和独立性。当时的供应商推出了各种工具来创建和使用 Web 服务,但很多 WS-* 标准尚未完全成熟。那种真正的互操作性并未得到立即实现也就不足为奇了。在旧式普通 Web 服务中,客户端往往使用相同的工具集,因此其集成基本不会出现问题。但如果用于生成 Web 服务的技术与客户端所用技术截然不同,特别是在应用了一种或多种 WS-* 标准(WS-Security)的情况下,Web 服务的使用就会成为一场噩梦。

我们已经看到,由于对标准的实现不同、所支持标准的版本不同、采用的编码不同等原因,Java Web 服务无法轻易集成 .NET 客户端(或者反之)。一种补救措施是不使用工具去生成 Web 服务构件,而是手动构建 Web 服务提供者或使用者,但这使标准带来的附加值消失殆尽:通过工具支持开发,从而简化和加速开发。幸运的是,WS-* 标准、WS-Interoperability 等一致性测试和工具集日渐成熟。如今,真正互操作性的承诺比五年或者十年前更为真实可及。

在这篇文章中,我们将介绍一个案例研究。在这个案例研究中,使用 Microsoft .NET 框架和 Silverlight 构建的员工门户应用程序将使用 Oracle Service Bus (OSB) 公开的 Web 服务。毋庸置疑,这个场景涉及两种截然不同的复杂工具集之间的 Web 服务交互。本文介绍了如何实现这些工具集之间的首次联系,如何利用 Oracle Web Services Manager (OWSM) 以声明式方法保护所公开的 Web 服务,门户应用程序如何与这些受保护的服务进行交互。

案例研究

本案例研究基于荷兰的一个公共部门项目。这个项目的主要目标是提高组织 IT 环境的灵活性和敏捷性,从而简化组织及其 IT 系统在未来的更改。为实现此目标所开展的工作是:逐步改造应用程序架构,从一组“杂而不精”的孤岛式应用程序,转变为由可重用、易集成的构建块(或服务)组成的环境,保证每种构建块(或服务)都有着明确而专一的目标。这些构建块可以是新型商业级现成 (COTS) 组件、定制开发的全新服务,也可以是现有组件。

图 1 给出了新应用程序架构及其组件的简化视图。Oracle Service Bus(蓝色)将后端系统(黄色)的功能作为 Web 服务公开,而专有协议和数据格式等基本细节则由总线“隐藏”。这些通用构建块的示例包括:

  • 一个文档服务,虚拟化两个现有文档管理系统
  • 一个案例管理服务,公开案例管理系统的功能
  • 金融服务
  • 可通过客户服务访问的 CRM 功能。

所公开的这些服务供经过重新设计的业务流程使用和重用,例如授权和许可使用 Oracle SOA Suite(红色)实施的流程、供员工用于支持组织业务流程的门户应用程序。门户是用 Microsoft .NET 和 Silverlight(绿色)构建的。


osb-silverlight-oswm-fig01
图 1

未来的系统(如基于 Web 的客户门户和其他业务流程)应该重用相同的服务。这些系统的底层技术尚不可知,因此服务必须具备互操作能力,必须提供卓越的服务质量,包括充分的安全性。

安全性

孤岛式、单一化的系统有许多值得商榷的方面:它们难于更改、难以管理,分析起来非常复杂,集成和重用也非常繁琐。然而,从安全性的角度来看,将所有数据和功能并入较大的单一系统或许是最简单的做法。数据和功能都位于一处。只要能有效地保护这个系统,数据和功能的安全就能得到保证。在 SOA 环境中,数据和功能划分为不同的小块,这些块本身简单而灵活,能够轻易更改和集成。但这也有着一定的副作用,也就是说,与仅包含少数单一应用程序的架构相比,服务间传输的消息以及传入和传出组织的消息要更多。这就需要从不同的角度思考安全性。下面列举了面向服务可能对安全性产生影响的几个具体方面:

  • 与人机交互相比,机器间交互的数量增加。自动交互也要求将身份验证等安全机制自动化。
  • 从消息发起到最后接收之间,消息交换所涉及的中间组件更多了,如 ESB、代理和路由服务等。这些中间组件可能无法处理这些消息,也可能不允许查看或更改正在传输的消息。除了在传输过程中保护消息之外,也有必要保护“静止不动”的消息。
  • 可重用服务可能拥有分散在组织内外的大量使用者。我们需要确定是否允许使用者访问服务公开的数据和功能,也必须能够区分对于不同使用者的访问控制。
  • 直接处理增加,即整个流程或者流程中的某些部分完全自动化,无需人为干预。高度自动化使故障后果的检测推迟,考虑到消息处理量更高,因此这种推迟的影响较为显著,增加了改善安全性和管理的需求。
  • 外部服务的使用增加,而此类服务的安全性大多无法直接控制,例如在通过互联网使用基于云的服务时就是如此。反之,外部组织也会使用您的服务。只有在使用者对您的服务质量(包括其安全性)充满信心的情况下,才会使用您的服务。
  • 各组织使用的各种服务极有可能是基于不同技术构建的。再考虑到服务间的集成程度比以往更高,因此有必要采用与实施无关的安全标准。安全实施必须符合这些标准。

IT 系统的安全性往往是在传输层或应用层实现的。传输安全性机制的示例包括利用 SSL(或者 TLS)对传输中的消息执行加密和签名,并实施身份验证 — 例如,利用双向 SSL。仅仅使用传输级安全性的缺点是“静止数据”未得到保护。在 ESB 和 BPM 平台等中间组件内处理的消息可能就属于这种情况。使用消息级安全性时,消息本身将被加密、签名,并可能包含身份验证和授权信息。在这些情况下,在此类中间组件内存储或处理的数据也能得到保护。讨论传输级和消息级安全性的文章和图书数不胜数,本文不再赘述。

Oracle Web Services Manager

Oracle Web Services Manager (OWSM) 提供了一种基于策略(或者代理)的安全性框架,用以实现服务的安全性需求。这意味着安全性功能将以声明式方法添加到服务提供者和客户端,完全不需要定制编码和部署。OWSM 提供了数十种现成可用的策略,能满足大多数常见安全性需求。这些策略划分为以下几类:

  • 可靠的消息传递
  • 管理
  • 寻址
  • 安全性
  • 消息传输优化机制 (MTOM)。

这些策略提供的功能包括:

  • 使用 WS-Security 用户名令牌执行身份验证;
  • 使用 WS-Security 标准和 PKI 证书对消息执行加密和签名;
  • 为请求消息和响应消息添加 WS-Addressing 信息;
  • 记录入站消息和出站消息。

有关受支持策略的完整列表,请查看 Web 服务安全性和管理员指南

OWSM 主要在消息级实现安全性,传输级安全可利用 OWSM 和服务运行在的 Oracle WebLogic Server 中的 SSL 支持实现。

如需添加和配置策略,可以在设计时使用 Oracle JDeveloper 或 Oracle Enterprise Pack for Eclipse 完成,也可以在运行时通过 Oracle Enterprise Manager 或 Oracle Service Bus Console 完成。Oracle Enterprise Manager 可用于监视策略以及检查违反这些策略的情况 — 例如,使用了错误的用户名/口令组合。可将策略应用于不同的服务实现,如 SOA 组合、OSB 服务和 Oracle WebLogic Server 中运行的普通 JAX-WS Web 服务。

图 2 再次展示了 DocumentService,员工门户调用了此服务。但这一次使用现成可用的 oracle/wss_username_token_service_policy 策略实施基于 WS-Security 用户名令牌的身份验证来保护服务。oracle/log_policy 策略用于记录发送给 DocumentService 的全部请求和响应消息,以备审计时使用。DocumentService 的实现保持不变,策略是通过配置应用的。使用者不会注意到这些策略的具体情况。


osb-silverlight-oswm-fig02
图 2

如图所示,可将多个策略结合起来,满足更加复杂的安全性需求。如果现成的策略不足以满足需求,OWSM 也提供了一种扩展机制,支持使用 Java 开发定制策略。

OWSM 集成在 Oracle WebLogic Server 之中,使用该平台提供的安全性 API。这就意味着,OWSM 能将身份验证和授权委托给 WebLogic 已配置的提供者,例如 Oracle Internet Directory (OID)、Oracle Access Manager 或其他任何符合 LDAP 的产品。

安全性实施案例研究

让我们再来看一下案例研究。对于门户与所公开服务之间的交互,我们确定了以下安全性需求:

  • 并非所有人都能直接调用后端服务来创建和批准授权。需要实施身份验证,以避免未经授权地访问 Web 服务和基本功能。应将身份验证委托给现有 OID。
  • 在门户与 OSB 之间传输且被截获的消息应保密,因为其中包含敏感数据,例如有关申请的个人信息等。我们需要添加机密性,以便保护截获的消息。

传输级安全性或消息级安全性均可满足这些需求。在本例中,我们将使用 WS-Security 用户名令牌执行身份验证,使用 SSL 执行传输级机密性。

本文的后续几节将介绍如何使用 OWSM 保护 Web 服务,如何在使用 Microsoft Silverlight 开发的应用程序内调用此类受保护的服务。

实现

“HelloWorld”演示展示的案例包含以下步骤,后续几节将详细加以介绍:

  1. 保护 OSB 服务
    1. 在 WebLogic Server 上启用 SSL
    2. 应用 OWSM 策略
    3. 身份验证提供者
    4. 使用 soapUI 测试受保护的服务
  2. 为 Silverlight 客户端添加安全性配置
    1. Silverlight 简介
    2. 通过 Silverlight 获取访问跨域 Web 服务的权限
    3. SSL 不足之处
    4. 在 Silverlight 中实现 WS Security

保护 OSB 服务

这一节介绍了如何在 OSB 运行在的托管服务器上启用 SSL,还列举了使用 Oracle Service Bus Console 应用 OWSM 策略的步骤。

在 WebLogic Server 上启用 SSL

我们需要实现传输级安全性,因此必须确保托管服务器支持 SSL。

  1. 登录 Oracle WebLogic Administration Console,启用 SSL,分配 SSL 监听端口
  2. 导航至 Environment Servers,选择 Managed Server,选中 SSL Listen Port Enabled 复选框。如果需要,您可以更改默认 SSL 监听端口。

osb-silverlight-oswm-fig03
图 3

请注意,Oracle WebLogic Server 默认为对于单向和双向 SSL 均使用其演示身份、信任存储及其包含的证书。用于生产时,最好使用包含受信任的证书颁发机构发行的密钥和证书的“真实”密钥库取代演示存储,不要使用自签名的证书。

应用 OWSM 策略

要将 OWSM 与 OSB 配合使用,先决条件之一就是在包含 OWSM 和 MDS 的 Oracle WebLogic 域中安装和配置 OSB。使用 OEPE(在设计时)或 Service Bus Console(在运行时),对 OSB 公开的 Web 服务应用 OSWM 策略只是小事一桩。在这个案例中,我们使用的是运行时控制台。

  1. 登录控制台,导航至您希望保护的代理服务的 Policies 部分,再选择 oracle/wss_username_token_service_policy 策略。此策略将通过 WS-Security 用户名令牌实施 SSL(保证消息机密性)和身份验证。

    请注意,SSL 是在 Oracle WebLogic Server 级别上配置的;而策略则通过 SSL 验证发送给 OSB 的消息。

osb-silverlight-oswm-fig04
图 4

  1. 策略设置完成后,我们需要在安全性设置中启用 Process WS-Security Header。这项更改能将代理服务转变为活动的安全性中间组件。如果未设置此标记,身份验证就会失败。

注:有时候,“Process WS-Security Header”设置可能并未显示。在这个案例中,我们注意到 WSDL 和 XSD 文件中的某些非 ASCII 字符(例如文档元素中)导致了这样的行为。从 WSDL 和 XSD 文件中删除这些字符即可解决问题。


osb-silverlight-oswm-fig05
图 5

我们所应用的策略使用明文的用户名/口令组合,因此并未提供最高安全性。某些替代性策略使用口令散列方法或身份验证令牌。此外,也可以应用消息级签名和加密。但对于这个演示案例来说,这种策略提供的安全性级别便已足够,这里的主要考虑事项是互操作性,所以我们还是选择了这种策略。此外,由于 SSL 是在传输级别上应用的,因此通过网络传输的凭证不会使用明文形式。

下面的代码段给出了 SOAP 消息的示例,其中包含的用户名/口令组合作为 WS-Security 用户名令牌。


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Security s:mustUnderstand="1" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-secext-1.0.xsd">
      <UsernameToken u:Id="7fba817f-4406-4a23-a65e-98e1df2b3e0d">
        <Username>weblogic</Username>
        <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-
profile-1.0#PasswordText">weblogic1</Password>
      </UsernameToken>
    </Security>
  </s:Header>
  <s:Body>
    <GreetingRequestMessage xmlns="http://www.example.org/HelloWorld/">
      <in xmlns="">Hello World !</in>
    </GreetingRequestMessage>
  </s:Body>
</s:Envelope>

身份验证提供者

Oracle WebLogic Server 使用基于文件的默认身份验证程序执行身份验证和授权。Oracle WebLogic Server 可配置为将身份验证委托给现有 Oracle Internet Directory (OID),只需将 OID 配置为主身份验证提供者即可。通过这种方式,即可根据符合 LDAP 的 OID 验证请求消息中 WS-Security 标头提供的用户名/口令组合。


osb-silverlight-oswm-fig06
图 6

  1. 登录 Oracle WebLogic Server 控制台,导航到“Security Realms”“Providers”,选择“New”配置新身份验证程序。
  2. 选择 OracleInternetDirectoryAuthenticator 作为 Type,并为新的身份验证程序输入一个名称,如 OIDAuthenticator
  3. 输入必要的设置,完成向导。保护 Oracle WebLogic Server 指南中详细介绍了将 OID 配置为主身份验证提供者的步骤。

服务器端(SSL 和 WSS)的必要步骤至此结束。现在即可测试受保护的服务,之后再深入探讨服务的使用者方面。

使用 soapUI 测试受保护的服务

使用 soapUI 测试受保护的 Web 服务与测试未受保护的 Web 服务区别不大。

  1. 打开 soapUI 创建一个新项目,随后像处理任何 Web 服务一样,导入 WSDL。请注意,我们输入的是 WSDL 的 HTTPS 位置,而非 HTTP 位置。为找到 WSDL 端点,可以将 OSB 代理服务位置作为后缀添加到 OSB 托管服务器的 URL 中,例如:https://localhost:8012/HelloWorldService/SSL?wsdl

    请注意,我们使用 8012(SSL 端口)而非 8011。另外还要注意,可以在 Service Bus Console 的 Proxy Service 设置中配置端点位置。
  2. 在 Navigator 中双击 soapUI 项目进行编辑,随后导航至 Security Configurations
  3. 选择“+”图标,添加一个 Outgoing WS-Security Configuration
  4. 为安全性配置输入名称,并输入有效的用户名/口令组合,这将用作默认值。在测试时,我们可以使用 WebLogic 帐户。在现实生活中,您可能会使用新系统帐户,或者使用用户帐户动态填充 WS-Security Username Token。将 Password Type 设置为 PasswordText
  5. 在 soapUI 中展开测试项目,注意 soapUI 会生成一条 Request 1 消息,我们可将其用于测试。
  6. 在底部的 Aut 选项卡中,选中新创建的外发 WSS 配置,添加 WSS 标头。如果需要,您可以覆盖 UsernamePassword 属性的默认值。
  7. 选择绿色的 play 图标,触发测试请求消息。请注意,请求消息中的 WS-Security 标头包含 Username Token。OSB 代理服务应返回有效的响应消息。
  8. 选择响应消息的 SSL Info 选项卡,检查响应的 SSL 证书消息。

osb-silverlight-oswm-fig07
图 7

  1. 更改请求消息,提供错误的口令,然后重新执行测试。现在,您应收到 OSB 发出的安全性错误。

对受保护的服务执行测试之后,我们继续进行客户端方面的配置。

为 Silverlight 客户端添加安全性配置

以下几个小节介绍了如何创建 Silverlight 应用程序来使用 Oracle Service Bus 公开的受保护 Web 服务。此外还介绍了如何为 Silverlight 应用程序添加 WS-Security 标头并启用 SSL。这些步骤也适用于“常规”.NET Windows Communication Foundation (WCF) 应用程序。

Silverlight 简介

Microsoft Silverlight 这个平台主要用于创建基于 Web 的应用程序。Silverlight 需要一个类似于 Adobe Flash 或 Java Applet 的浏览器插件,而非 HTML 5 或基于服务器的框架,例如呈现 HTML 和 CSS 的 ASP.NET、JSP 和 JSF。对于已在 Microsoft 平台上运行的企业来说,Microsoft Silverlight 是创建“内部网”业务应用程序的理想选择。

Silverlight 基于 .NET 框架。Silverlight 框架继承了 .NET 许多广为人知的类和命名空间。Windows Communication Foundation 是 .NET 平台中进程间通信的事实标准。因此,Silverlight 使用“轻 WCF”访问 Web 服务。

通过 Silverlight 获取访问跨域 Web 服务的权限

在 Silverlight 解决方案中,Web 服务器不会与后端 Web 服务通信。Silverlight 应用程序在浏览器中运行,直接调用服务而非“传统”的 ASP、JSP 或者 JSF Web 应用程序。这意味着 Web 服务请求可以来自广泛的客户机,而非仅限于一两台服务器。在这种架构中,基于访问控制的标准安全性(例如,基于 IP 编号)的效果较差,因为没有任何中央 Web 服务器作为 OSB 服务的固定客户端。

请注意,考虑到存在安全性风险(例如跨站点脚本编写或者跨域伪造),默认情况下不允许将不在相同源域或源站点(子域、协议和端口)中运行的 Web 服务作为 Silverlight 应用程序调用。如果 Silverlight 应用程序在 Oracle Service Bus 以外的某个域中运行;或者 Silverlight 应用程序的访问是通过 HTTP 执行的,但 Web 服务调用通过 HTTPS 执行时,就会发生这种情况。由于存在这些安全性考虑,因此我们需要对环境加以配置,允许 Silverlight 应用程序与 Web 服务之间的通信。

必须注意,在此类情况下,强烈建议首先分析相关的安全性风险和考虑事项,并采取恰当的措施,之后再启用跨域访问。有许多资源提供了有关安全性需求和措施的信息,例如 Oracle 技术网中的安全性指南

与 Adobe Flash 相似,Microsoft Silverlight 也能事先处理托管 Web 服务的服务器根中的 clientaccesspolicy.xmlcrossdomain.xml 配置文件,之后再允许与实际的 Web 服务通信。此类配置文件用于管理 Web 服务访问。由于 Oracle Service Bus 是在 Oracle WebLogic Server 之上运行的,因此我们将创建一个简单的 WebLogic Web Application,它唯一的任务就是托管 clientaccesspolicy.xml 文件。有关跨域访问的具体背景信息,可参阅 Microsoft MSDN Library 内的 Silverlight 中的网络与 Web 服务

  1. 使用 Oracle Enterprise Pack for Eclipse 新建一个 Dynamic Web Project
osb-silverlight-oswm-fig08
图 8

  1. 将以下 clientaccesspolicy.xml 文件添加到项目以允许所有入站 HTTP 和 HTTPS 请求:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="http://*" />
        <domain uri="https://*" />
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

请注意,此策略文件允许从任意位置进行访问。在真实环境中,建议相应地修改此项策略(使之更加严格)。

添加该文件后,Eclipse 中的项目应如图 9 所示。


osb-silverlight-oswm-fig09
图 9

  1. 由于我们的 clientaccesspolicy.xml 文件需要存放在根目录下,因此为项目添加一个 weblogic.xml 部署描述文件,将“/”(根)定义为上下文根。

osb-silverlight-oswm-fig10
图 10

  1. 将项目导出为 WAR 文件并部署到 WebLogic Managed Server。

osb-silverlight-oswm-fig11
图 11

  1. 在浏览器中访问 clientaccesspolicy.xml 文件测试部署。

osb-silverlight-oswm-fig12
图 12

SSL 不足之处

务必牢记,我们应用的 OWSM 策略会以明文形式在网络上发送 WSS 用户名/口令组合。使用“PasswordText”时,Silverlight 强制使用 HTTPS 而非 HTTP [6]。如果通过 HTTP 发送明文口令,那么添加这些 WSS 标头以实施安全性的目标就不可能实现。

下一步是将服务器(本案例中即 Oracle WebLogic Server)使用的证书导入运行 Silverlight 应用程序的浏览器。可使用 JDK 包含的 keytool 实用工具,从 WebLogic 密钥库中获取证书。有关更多信息,请参阅保护 Oracle WebLogic Server


osb-silverlight-oswm-fig13
图 13

应该注意,只要使用了无效证书,浏览器就会报告证书信任问题 — 尝试调用 Web 服务时,您会看到 Silverlight 中为人诟病的跨域错误。

在 Silverlight 中实现 WS Security

接下来使用 Visual Studio 创建 Silverlight 应用程序。

  • File 菜单中选择 New Project,新建一个 Silverlight 项目。
  • 选择 Installed Templates 窗格中的 Silverlight,按照向导完成项目的创建。
  • Solution Explorer 中右键单击新生成的项目,选择 Add Service Reference 为 OSB 服务生成 Web 服务代理。
  • Address 框中输入 Web 服务端点和输入其他必要的设置以生成代理类。

osb-silverlight-oswm-fig14
图 14

请参阅 Microsoft MSDN Library 中的方法文档:新建 Silverlight 项目方法文档:添加、更新或删除服务引用,进一步了解创建 Silverlight 项目和创建 Web 服务客户端的具体步骤。

接下来,我们需要修改已生成的 Web 服务绑定,以便将 WSS 消息凭证添加到出站 SOAP 调用,确保通过 HTTPS 调用 Web 服务。如前文所述,Silverlight 使用 WFC 子集执行 Web 服务交互。WCF 支持 WS-Security 用户名令牌标准 [6]

我们可以在 Visual Studio 中编辑 Web 服务绑定配置,添加以下代码段,以便实现这种配置:

<customBinding>
  <binding name="BasicWsSecurity">
    <security authenticationMode="UserNameOverTransport" includeTimestamp="false"/>
      <textMessageEncoding messageVersion="Soap11"/>
      <httpsTransport/>
  </binding>
</customBinding>

接下来,我们需要使用填充 WS-Security 标头所用的 ClientCredentials 属性,设置用户名和口令。需要对每个 Web 服务代理执行一次这样的设置:

HelloWorldClient client = new HelloWorldClient("HelloWorldSOAP_BasicWsSecurity");
client.ClientCredentials.UserName.UserName = "weblogic";
client.ClientCredentials.UserName.Password = "weblogic1";

至此一切设置完成,接下来即可运行 Silverlight 应用程序,调用 OSB 公开的受保护 Web 服务。


osb-silverlight-oswm-fig15
图 15

Silverlight 应用程序显示了来自受保护 Web 服务的响应消息!

总结

若能集成异构平台,例如 Oracle 和 Microsoft 的工具体系,WS-Security 等可互操作标准的附加值就能展露无遗。Oracle Web Services Manager (OWSM) 是 Oracle 用于保护服务和业务流程的主要工具,它能应用和实施 SSL、WS-Security 和 SAML 等标准。这是通过一种无需编码的声明式方法完成的,策略(或代理)将在运行时应用以提供必要的安全性。OWSM 提供了数十种预定义的策略,可直接应用于 Oracle SOA Suite、OSB 和 Oracle WebLogic Server(JAX-WS Web 服务)公开的 Web 服务。

本文介绍了如何为 Oracle Service Bus 公开的 Web 服务应用 OWSM 策略,以及如何在用 Microsoft Silverlight 构建的 Web 应用程序中使用此类 Web 服务。Silverlight 与 Windows Communication Foundation (WCF) 密切相关,而后者支持 WS-Security。

应用安全性措施并不容易。可以屏蔽与安全性相关的错误消息,避免敏感信息(例如平台版本、堆栈跟踪、必要的安全性配置等)对外泄露,此外也可以加密有效负载。但这会导致受保护环境中的调试更加困难。

幸运的是,有许多非常有用的工具能帮助我们实施和测试安全性。其中包括:

  • Fiddler — 用于调查通过网络发送了哪些数据(请求和响应,包含安全性标头)。
  • soapUI — 用于测试和模拟包含的 Web 服务。
  • Oracle Web Services Manager — 提供了一种记录策略,用于记录入站和出站消息。

通常情况下,各种标准都会留出一定的解释空间,很少有供应商能严密实施标准。实际集成 Oracle 平台和 Microsoft 平台这类截然不同的技术时,总是存在一些迷思。请参阅 Oracle Web Services Manager 互操作性指南,拨开迷雾。

参考资源

  1. Web 服务安全性和管理员指南,Oracle 技术网
  2. Oracle Web Services Manager 互操作性指南,Oracle 技术网
  3. 保护 Oracle WebLogic Server,Oracle 技术网
  4. Silverlight 主页
  5. Silverlight 中的网络与 Web 服务,Microsoft MSDN Library
  6. 方法文档:为 Silverlight 应用程序使用消息凭证以保护服务,Microsoft MSDN Library
  7. 安全性指南,Oracle 技术网
  8. 方法文档:新建 Silverlight 项目,Microsoft MSDN Library
  9. 方法文档:添加、更新或删除服务引用,Microsoft MSDN Library

关于作者

Ronald van LuttikhuizenVennster 的执行合伙人和架构师,还是 Oracle ACE 的总监LinkedIn  

Jens Peters 是 Microsoft 认证金牌合作伙伴 One Fox 的一位技术架构师。LinkedIn