安全会话的安全注意事项

您应考虑实现安全会话时影响安全的下列事项。 有关安全注意事项详细信息,请参阅安全注意事项安全性的最佳做法

安全会话和元数据

当建立安全会话并且 RequireCancellation 属性设置为 false 时,作为服务终结点的 Web Services 描述语言 (WSDL) 文档中元数据的一部分,Windows Communication Foundation (WCF) 将发送 mssp:MustNotSendCancel 断言。 mssp:MustNotSendCancel 断言通知客户端此服务不响应取消安全会话的请求。 当 RequireCancellation 属性设置为 true 时,在 WSDL 文档中,WCF 不发出 mssp:MustNotSendCancel 断言。 当客户端不再需要安全会话时,客户端应向服务发送一个取消请求。 使用 ServiceModel 元数据实用工具 (Svcutil.exe) 生成客户端时,客户端代码对 mssp:MustNotSendCancel 断言的存在与否会做出适当的响应。

安全对话和自定义令牌

将自定义令牌和派生密钥混合使用会产生一些问题,这是它在 WS-SecureConversation 规范中的定义方式所导致的。 该规范指出 wsse:SecurityTokenReference 是引用派生令牌的可选元素:“此 /wsc:DerivedKeyToken/wsse:SecurityTokenReference 可选元素用来指定安全性上下文令牌、安全令牌或用于派生的共享密钥/机密。 如果未指定,则假定收件人可以从消息上下文确定共享密钥。 如果无法确定上下文,则应该引发诸如 wsc:UnknownDerivationSource 之类的错误”。

这意味着,如果希望派生自定义令牌,应该将其子句类型包装在 SecurityTokenReference 元素中。 有一个选项可关闭派生,但是默认为派生密钥。 如果无法封装密钥,则对派生密钥令牌进行序列化将成功,但是尝试对其进行反序列化将引发异常。

另请参阅