セキュリティで保護されたセッションに関するセキュリティの検討
セキュリティで保護されたセッションを実装する場合に、セキュリティに影響を及ぼす次の項目について考慮する必要があります。 セキュリティについての考慮事項の詳細については、「セキュリティのデータの考慮事項」および「セキュリティのベスト プラクティス」を参照してください。
セキュリティで保護されたセッションとメタデータ
セキュリティで保護されたセッションが確立され、RequireCancellation プロパティが false
に設定されると、Windows Communication Foundation (WCF) はサービス エンドポイントの Web サービス記述言語 (WSDL: Web Services Description Language) ドキュメントにメタデータの一部として mssp:MustNotSendCancel
アサーションを出力します。 mssp:MustNotSendCancel
アサーションは、クライアントに対してセキュリティで保護されたセッションのキャンセル要求にサービスが応答しないことを通知します。 RequireCancellation プロパティが true
に設定されている場合、WCF は WSDL ドキュメントに mssp:MustNotSendCancel
アサーションを出力しません。 セキュリティで保護されたセッションが必要でなくなった場合、クライアントはサービスに対してキャンセル要求を送る必要があります。 ServiceModel Metadata Utility Tool (Svcutil.exe) を使用してクライアントを生成した場合、クライアント コードは、mssp:MustNotSendCancel
アサーションが存在するかどうかに対して適切に反応するようになります。
セキュリティ保護されたメッセージ交換とカスタム トークン
WS-SecureConversation 仕様での定義方法に起因する、カスタム トークンと派生キーの混在に関する問題があります。 仕様では、wsse:SecurityTokenReference
が派生トークンを参照するオプション要素であることについて、次の記述があります。「/wsc:DerivedKeyToken/wsse:SecurityTokenReference
このオプションの要素は、派生用のセキュリティ コンテキスト トークン、セキュリティ トークン、または共有キーやシークレットの指定に使用されます。 指定されていない場合、受信者はメッセージのコンテキストから共有キーを判断できると想定されます。 コンテキストを判断できない場合は、wsc:UnknownDerivationSource
などのエラーが発生します。」
つまり、カスタム トークンを派生させるには、SecurityTokenReference
要素にその句型をラップする必要があります。 派生をオフにするオプションもありますが、キーを派生させるオプションが既定となっています。 キーをラップしなかった場合、派生キー トークンのシリアル化は実行されますが、その逆シリアル化を試みると例外がスローされます。