セキュリティで保護されたセッションを実装する場合は、セキュリティに影響を与える次の項目を考慮する必要があります。 セキュリティに関する考慮事項の詳細については、「 セキュリティに関する考慮事項 と セキュリティのベスト プラクティス」を参照してください。
セキュリティで保護されたセッションとメタデータ
セキュリティで保護されたセッションが確立され、 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
要素でラップする必要があります。 派生をオフにするオプションがありますが、既定ではキーを派生させます。 キーをラップできない場合、派生キー トークンのシリアル化は成功しますが、逆シリアル化しようとすると例外がスローされます。