文章
· 十月 9 阅读大约需 3 分钟

第四十三章 使用 WS-ReliableMessaging - 对 WS-ReliableMessaging 标头进行签名

第四十三章 使用 WS-ReliableMessaging - 对 WS-ReliableMessaging 标头进行签名

WS-ReliableMessaging 标头进行签名

可以通过以下任一方式签署 WS-ReliableMessaging 标头。

使用 SecurityContextToken 对标头进行签名

如果还使用 WS-SecureConversation,则 Web 客户端的 SecurityContextToken 属性包含一个对称密钥,可以使用该密钥对 WS-ReliableMessaging 标头元素进行签名。为此,请在调用 %SOAP.RM.CreateSequence实例的 AddSTR() 方法,并将 SecurityContextToken 属性作为参数传递:

 do createsequence.AddSTR(client.SecurityContextToken)

在调用 %StartRMSession() 之前执行此操作。

签署消息时签署标头

还可以使用与签署消息其余部分相同的方式签署 WS-ReliableMessaging 标头。为此,在调用 %XML.SignatureCreate()CreateX509() 方法时,将值 $$$SOAPWSIncludeRMHeaders 添加到 signatureOptions 参数。$$$SOAPWSIncludeRMHeaders 宏包含在 %soap.inc 文件中。

修改 Web 服务以支持 WS-ReliableMessaging

要修改 IRIS Web 服务以支持 WS-ReliableMessaging,请修改 Web 方法以便它们执行以下操作:
- 验证入站请求消息是否包含 WS-ReliableMessaging 标头。
- 验证 WS-ReliableMessaging 标头是否已签名。

请注意 IRIS 会自动检查任何签名是否有效。请参阅验证和解密入站消息。

  • 可选择指定 Web 服务类的参数来微调 Web 服务的行为,如下一节所述。

控制 Web 服务如何处理可靠消息

可以指定 Web 服务类的以下参数来微调 Web 服务的行为:

RMINORDER

对应于 WS-ReliableMessagingInOrder 策略断言。将其指定为 0 (false)1 (true)。有关详细信息,请参阅 Web Services Reliable Messaging Policy 1.1 规范。

默认情况下,当未指定此参数时, IRIS Web 服务不会发出有关消息顺序的 SOAP 错误。

RMDELIVERYASSURANCE

对应于 WS-ReliableMessagingDeliveryAssurance 策略断言。将其指定为“ExactlyOnce”、“AtLeastOnce”或“AtMostOnce”。有关详细信息,请参阅 Web Services Reliable Messaging Policy 1.1 规范。

默认情况下,当未指定此参数时,IRIS Web 服务不会发出有关根据此策略断言进行传送的任何失败的 SOAP 故障。

RMINACTIVITYTIMEOUT

指定 Web 服务接收的序列的不活动超时时间(以秒为单位)。默认值为 10 分钟。

此外,还可以实现 Web 服务的 %OnCreateRMSession() 回调方法。此方法在 WS-ReliableMessaging 会话开始时调用,然后返回 %SOAP.RM.CreateSequenceResponse。此时,响应参数已完全创建,但尚未返回。此回调使有机会将任何所需的 Security 标头元素添加到 Web 服务的 SecurityOut 属性。如果使用 WS-Policy,则 WS-Policy 支持会自动执行此操作。有关方法签名,请参阅 %SOAP.WebService的类参考。

讨论 (0)1
登录或注册以继续