本主题解释了如何在 SOAtest 和 Virtualize 中配置并应用 XML 签名器工具。出于安全目的,此工具对 XML 文档进行签名。
本章包含:

了解 XML 签名

为了在 Web 服务事务期间安全地通过 Internet 发送数据,必须制定安全标准,以确保参与事务的不同用户能够相互识别。W3C 推荐的 XML 签名标准定义了一个允许对 XML 文档中的任何数据进行数字签名的过程。使用 XML 签名,Web 服务用户可以验证参与事务的其他人的身份,并可以确保自文档签名以来数据没有被更改。OASIS 利用了这个标准,因此可以在 SOAP 中使用它。

配置 XML 签名器工具

XML 签名器工具支持 W3C XML 签名标准,并允许对作为 Web 服务事务发送的数据进行数字签名。XML 签名器工具还允许您对 XML 文档的各个元素或整个文档本身签名。这个特性对于在多个合作伙伴或端点之间执行的 Web 服务事务特别有用。例如,购买汽车的事务可能通过 Web 服务进行。在这种情况下,买方必须签署文件的某些部分,信贷员可能必须签署文件的某些部分,卖方也必须签署文件的某些部分。

工具设置

工具设置选项卡的左窗格显示以下选项:

常规设置

在 General 选项卡中有以下选项:

Key Store

从 Key Store 下拉菜单中选择用于验证身份和签名 XML 数据的密钥存储库。此菜单中可用的密钥存储库依赖于您在测试或响应程序套件级别添加的密钥存储库。关于添加密匙库的更多信息,请查阅 Adding Global Key Stores in SOAtestAdding Global Key Stores in Virtualize

Algorithm指定用于定义证书密钥的唯一算法。
Digest method选择用于对数据签名的消息摘要算法。
Canonical form指定用于创建正在签名的信息的规范化形式的算法。
KeyInfo form

KeyInfo 是签名中的一个可选元素;它包含验证签名所需的公钥信息。它只适用于在 POX 或 SAML 上执行封装签名(关闭 WS-Security 模式)。选择 KeyInfo 元素中应该包含哪些选项。可使用以下选项:

  • X509 Certificate: 包含一个 X509Data/X509Certificate 元素,其中包含 base64 编码证书。  这是推荐的默认值。
  • X509 IssuerSerial: 包含一个 X509Data/X509IssuerSerial 元素,其中包含 X.509 名称/序列号对。
  • X509 SKI: 包含一个 X509Data/X509SKI 元素,其中包含 base64 编码的主题键标识符。证书必须是版本 3 的 X.509。
  • X509SubjectName: 包含一个 X509Data/X509SubjectName 元素,其中包含 X.509 主题名。
  • Public KeyValue: 包含一个 KeyValue/RSAKeyValue 元素,其中包含 base64 编码的公钥。
  • STR X509 Certificate: 包含一个 wsse:SecurityTokenReference/wsse:KeyIdentifier 元素,其中包含 base64 编码证书。
  • STR X509 SKI:  包含一个 wsse:SecurityTokenReference/wsse:KeyIdentifier 元素,其中包含 base64 编码的主题键标识符。
WS-Security mode

支持根据 OASIS WS-Security 对 SOAP 消息进行签名。可以在 Emulation Options Settings中配置 OASIS 的标准版本。默认情况下,整个 SOAP 主体的内容将按照 Target Elements Settings中配置的那样自动签名。当禁用此模式时,将对目标元素执行带信封的签名。

Security header layout 下拉菜单中选择一个设置,以指定 the WS-Security header中添加项目时应该使用哪些布局规则。可使用以下设置

  • Lax: 按照符合 WSS 的任何顺序将项目添加到安全数据头:SOAP 消息安全。
  • LaxTimestampFirst: 与 Lax相同,只是安全数据头中的第一项必须是 wsse:Timestamp。
  • LaxTimestampLast: 与 Lax相同,只是安全数据头中的最后一项必须是 wsse:Timestamp。
  • Strict: 根据‘使用前声明’的一般原则,按照下面描述的编号布局规则将项添加到安全数据头中。

启用 Sign security token using STR Dereference Transform (STRDT) 选项,通过使用 STR 解引用转换(STRDT)算法引用安全令牌引用(STR),以自动包括签名中的安全令牌。默认情况下,签名将引用 KeyInfo 元素下的签名中自动生成的 STR。如果应该引用不同的 STR(例如来自安全数据头的 STR),则在目标元素配置中包含该 STR。

Perform SAML signature

启用此选项可以基于 OASIS SAML 令牌配置文件签署 SOAP 消息,或者对 SAML 断言执行封装的签名。

如果禁用 WS-Security 模式选项,则将在 Target Elements Settings下面选择的 SAML 断言上形成一个封装的 SAML 签名。使用密钥保持器确认方法的 SAML 断言通常应该有一个带信封的签名。

如果启用 WS-Security 模式选项,则 SOAP 信封将基于 OASIS SAML 令牌配置文件进行签名。必须选择正确的 Emulation 选项,否则签名将不会成功:

  • 对于 SAML 1.1,请选择 1.5 或更高版本的 WSS4J 1.5,或者选择 1.1 或更高版本的 OASIS 1.1。
  • 对于 SAML 1.1,请选择 1.6 的 WSS4J,或者选择 1.1.1 版本的 OASIS。
User Key Store

启用此选项以引用请求者的密钥存储库。此选项仅适用于使用密钥保持器确认方法的 SAML 断言。当断言没有带信封的签名时,应该禁用此选项。对于 sender-vouches 确认来说,这是典型的方法。

如果禁用 WS-Security 模式,则可以选择使用密钥存储库将用户的公钥信息添加到断言的主题确认中,然后再对 SAML 断言执行封装签名。这适用于持有密钥的场景,其中断言持有用户的密钥,并由断言发布方签名。

如果启用 WS-Security 模式,则必须满足以下要求,以便 SOAP 消息上的签名能够成功:

    1. 密钥持有器断言必须持有此密钥存储库引用的用户证书。 
    2. SOAP 数据头中的断言必须已经有一个封装的签名。

可以将两个 XML 签名者链接在一起,以方便 密钥保持器的确认。配置第一个签名者,将您的公钥信息添加到断言的主题确认中,然后在关闭 WSS 模式的情况下对断言执行一个带信封的签名。接下来,第二个签到者可以使用 WSS 模式对包含基于 OASIS SAML 令牌概要文件的 SAML 断言的 SOAP 信封进行签名。

WS-Security 设置

在 WS-Security 选项卡中有以下可用选项:

Form选择适当的表单以指定用于加密的密钥和证书。
Actor输入一个值来指定 SOAP 参与者。
Add must Understand=1指定接收方是否必须识别和验证消息的签名。如果启用此选项,如果接收方不知道如何处理签名数据头,则将发回 SOAP 错误。
Add Timestamp

启用此选项可向消息添加时间戳。可使用以下设置:

  • 启用 Sign timestamp 以提供带时间戳的数字签名。
  • 启用 Add expiration 以输入有效值。

目标元素设置


启用 SOAP body/entire document 选项以对整个 SOAP 主体或整个 XML 文件进行签名。

若要指定 Xpath 并在 XML 文档中对特定元素进行签名:

  1. 禁用 SOAP body/entire document 选项,然后单击 Tree 选项卡。
  2. 选择一个元素,然后单击 Extract。选中的元素列表中将出现一行。
  3. 单击 Modify 以对要签名的 XPath 表达式进行更改。可使用以下提取选项:
    1. Entire Element 将对整个 XPath 进行签名
    2. Content Only 将只对文本内容进行签名
  4. 单击 Evaluate Xpath 以验证变更。
  5. 单击 OK

模拟选项设置

配置模拟设置仅适用于 WS-Security Mode 启用的情况下,该选项位于 General Settings 

  1. Emulate 下拉菜单选择应用程序服务器,以自动配置模拟选项。 
  2. Version 下拉菜单选择合适版本的应用程序服务器。

还可以通过从 Emulate 下拉菜单选择 Custom 手动配置模拟选项。将提供下列选择:

  • wsse URI: 选择使用的 WS-Security 规范的命名空间 URI。
  • wsu URI: 选择使用的 WS-Security 规范的工具命名空间 URI。
  • Qualify signed element ID attribute: 选择以限定带符号元素 ID 属性。
  • Qualify BinarySecurity Token attributes: 选择以使用 wsse 命名空间限定二进制安全令牌属性。
  • Prefix BinarySecurity Token attribute values: 选择以使用 wsse URI 作为二进制安全令牌属性的前缀。

输入类型选项卡

Input Type 选项卡只有当 XML 签名工具作为独立工具(而不是链接到另一个工具)添加时才可用。在 Input Type 选项卡中有以下可用选项:

  • Text: 如果要将 XML 文档键入或拷贝到 UI,则使用该选项。选择合适的 MIME type,在 Text 单选按钮下的文本字段中输入 XML。
  • File: 如果要使用现有文件,则使用该选项。单击 Browse 按钮选择文件。
    • 如果要将该文件的路径作为当前配置文件的相对路径来保存,则选择 作为相对路径保存 选项。启用该选项可以更容易地在多个机器之间共享工具。如果该选项未启用,则测试或响应程序将把该文件路径保存为绝对路径。

使用注意事项

您可以通过右键单击主测试套件并从快捷菜单中选择 Add New> Test ,然后选择打开的对话框中的 XML Signer 将 XML 签名工具作为工具级别上的独立工具使用。您  还可以 通过右键单击所需工具节点并从快捷菜单中选择 Add Output ,然后选择打开的对话框中的 XML Signer 将 XML 签名工具链接到消息传递工具。消息传递工具将使用转换后的 XML。

您可以将 XML 签名工具和 XML 加密工具链接到消息传递工具,以便在 SOAP 消息上同时执行加密和 XML 签名。有关 XML 加密工具的更多消息,请查阅 XML 加密

您还可以通过右键单击所需的 XML Signer Tool 节点并从快捷菜单中选择 Add Output ,然后选择打开对话框中的 XML Signer ,将任何工具(比如编辑或浏览工具)链接到 XML Signer Tool

无限强度的 Java 加密扩展

若要执行使用 XML 签名验证器、XML 签名器或 XML 加密工具或如果使用密匙库执行安全操作,那么您将需要下载并安装无限强度的 Java 加密扩展。有关更多详情,请查阅 JCE 前提条件

相关教程

以下教程演示如何使用这个工具:

  • No labels