安全会话的安全注意事项
在实现安全会话时,应该考虑影响安全的下列事项。有关安全注意事项的更多信息,请参见安全注意事项和WCF 中安全性的最佳做法。
安全会话和元数据
当建立安全会话并且 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 元素中。有一个选项可关闭派生,但是默认为派生密钥。如果无法封装密钥,则对派生密钥令牌进行序列化将成功,但是尝试对其进行反序列化将引发异常。
另请参见
任务
如何:在 WSFederationHttpBinding 上禁用安全会话