安全会话的安全注意事项

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

保护会话和元数据

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

安全对话和自定义令牌

由于 WS-SecureConversation 规范中定义的方式,混合自定义令牌和派生密钥时会出现问题。 该规范表示, wsse:SecurityTokenReference 这是一个引用派生令牌的可选元素:“/wsc:DerivedKeyToken/wsse:SecurityTokenReference 此可选元素用于指定用于派生的安全上下文令牌、安全令牌或共享密钥/机密。 如果未指定,则假定收件人可以从邮件上下文中确定共享密钥。 如果无法确定上下文,则应该引发诸如 wsc:UnknownDerivationSource 之类的错误”。

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

另请参阅