用于建立安全上下文令牌以保护可靠消息传递的流
此示例方案包括 Web Service 可靠消息传递 (WS-ReliableMessaging)、WS-SecureConversation 和 WS-Trust 的组合方案所需要的功能。此方案描述如何将 WS-SecureConversation 与 WS-ReliableMessaging 配合使用,并且是从 WS-SecureConversation 角度来描述的。
此 Web Service 可靠消息传递 (WS-ReliableMessaging) 方案的流程与 WS-SecureConversation 方案的流程非常相似,并且应用程序消息的交换与“安全对话”方案非常相似。这两个示例方案之间的主要差别在于:WS-ReliableMessaging 序列是使用安全上下文令牌来保护的,并将 WS-ReliableMessaging 序列的范围限制为安全上下文令牌。
下图总结了建立安全上下文令牌以保护可靠消息传递时所需要的消息流。
图 1. 用于 SCT 和可靠消息传递的消息交换

方案
WS-ReliableMessaging 序列是使用安全上下文令牌来保护的,并将 WS-ReliableMessaging 序列的范围限制为安全上下文令牌。此方案重点描述了整个流程中使用安全上下文令牌来进行消息交换。
注: 并未描述 WS-ReliableMessaging 如何根据安全上下文令牌范围来验证 WS-ReliableMessaging 序列的准确详细信息。
通常,要使用安全对话和安全上下文令牌来保护可靠消息传递,需要执行以下步骤:
- WS-ReliableMessaging 运行时调用 Web Service 安全性运行时中的 API 以将安全上下文令牌的 UUID 用于会话,还将用于对安全上下文令牌进行序列化和反序列化的 API 用于可靠恢复的受管持续性。
由于安全上下文令牌的安全性特性,WS-ReliableMessaging 协议确保持久存储器中的已序列化的安全上下文受保护。
- 如果已经建立了安全上下文令牌,那么就会将现有安全上下文令牌的 UUID 返回给 WS-ReliableMessaging。如果尚未建立安全上下文令牌,那么 Web Service 安全性运行时将告诉接收方以建立安全上下文令牌。
后一种情况类似于“安全对话”方案。
- 在 WS-ReliableMessaging 运行时获取安全上下文令牌的 UUID 之后,WS-ReliableMessaging 运行时将通过在 CreateSequence 消息中使用 SecurityTokenReference (STR) 参数将 CreateSequence 消息的范围限制于该安全上下文令牌,并以 CreateSequenceResponse 消息作为响应。
应用程序消息的交换方式与 WS-SecureConversation 方案中的消息交换方式非常相似。
- WS-ReliableMessaging 运行时以 CreateSequenceResponse 消息作出响应。
消息的交换方式与 WS-SecureConversation 方案中的交换方式非常相似。
- WS-ReliableMessaging 运行时发送一则 SequenceAcknowledgement 消息,以应答安全上下文令牌正确传递和保护了该消息。
- 最后,WS-ReliableMessaging 运行时将发送一则 TerminateSequence 消息以终止序列并由安全上下文令牌加以保护。