方法 : セキュリティで保護されたセッションを作成する
メッセージ セキュリティを有効にすると、basicHttpBinding Element バインディングを除き、システム提供のバインディング Windows Communication Foundation (WCF) では、セキュリティで保護されたセッションが自動的に使用されます。
既定では、セキュリティで保護されたセッションは、再利用される Web サーバーで存続します。セキュリティで保護されたセッションが確立されると、クライアントとサービスが、セキュリティで保護されたセッションに関連付けられているキーをキャッシュします。メッセージを交換するときは、キャッシュされたキーの識別子のみが交換されます。Web サーバーが再利用される場合は、Web サーバーが識別子のキャッシュされたキーを取得できないようにキャッシュも再利用されます。これが発生した場合、例外がクライアントにスローされます。ステートフルなセキュリティ コンテキスト トークン (SCT: Security Context Token) を使用するセキュリティで保護されたセッションは、再利用される Web サーバーで存続することができます。セキュリティで保護されたセッションでステートフルな SCT を使用する方法詳細については、 、「方法 : セキュリティで保護されたセッションに対しステートフルなセキュリティ コンテキスト トークンを作成する」を参照してください。
サービスが、システム提供のバインディングの 1 つを使用して、セキュリティで保護されたセッションを使用するように指定するには
メッセージ セキュリティをサポートするシステム提供のバインディングを使用するようにサービスを構成します。
basicHttpBinding Element バインディングを除き、システム提供のバインディングでメッセージ セキュリティが使用されるように設定しておくと、WCF ではセキュリティで保護されたセッションが自動的に使用されます。次の表は、メッセージ セキュリティをサポートするシステム提供のバインディングを示し、そのバインディングでメッセージ セキュリティが既定のセキュリティ機構であるかどうかを示しています。
システム提供のバインディング 構成要素 既定でメッセージ セキュリティが有効 ×
○
○
○
×
×
次のコード例に使用されている構成では、wsHttpBinding Element、メッセージ セキュリティ、およびセキュリティで保護されたセッションを使用する
wsHttpBinding_Calculator
という名前のバインディングを指定しています。<bindings> <WSHttpBinding> <binding name = "wsHttpBinding_Calculator"> <security mode="Message"> <message clientCredentialType="Windows"/> </security> </binding> </WSHttpBinding> </bindings>
wsHttpBinding Element、メッセージ セキュリティ、およびセキュリティで保護されたセッションを使用して、
secureCalculator
サービスをセキュリティで保護するように指定するコード例を次に示します。メモ : wsHttpBinding Element については、establishSecurityContext 属性を false に設定してセキュリティで保護されたセッションを無効にできます。他のシステム提供のバインディングについては、カスタム バインディングを作成することでのみ、セキュリティで保護されたセッションを無効にできます。
カスタム バインディングを使用して、サービスでセキュリティで保護されたセッションが使用されるように指定するには
セキュリティで保護されたセッションで SOAP メッセージが保護されるように指定したカスタム バインディングを作成します。
カスタム バインディングの作成詳細については、 、「方法 : システム指定のバインディングをカスタマイズする」を参照してください。
次のコード例で使用されている構成では、セキュリティで保護されたセッションを使用して SOAP メッセージを保護するカスタム バインディングを指定しています。
<bindings> <!-- configure a custom binding --> <customBinding> <binding name="customBinding_Calculator"> <security authenticationMode="SecureConversation" /> <secureConversationBootstrap authenticationMode="SspiNegotiated" /> <textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8"/> <httpTransport/> </binding> </customBinding> </bindings>
セキュリティで保護されたセッションをブートストラップするための MutualCertificate 認証モードを使用する、カスタム バインディングを作成するコード例を次に示します。