您應該考慮下列在實作安全會話時影響安全性的項目。 如需安全性考慮的詳細資訊,請參閱 安全性考慮 與 安全性最佳做法。
保護會話和元數據
建立安全會話並將 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 。 有一個選項可以關閉衍生,但預設值是衍生密鑰。 如果您未能封裝密鑰,衍生金鑰令牌的序列化可以成功,但當嘗試將其反序列化時,將拋出例外狀況。