次の方法で共有


方法 : セキュリティ モードを設定する

Windows Communication Foundation (WCF) セキュリティには、"トランスポート"、"メッセージ"、および "メッセージ資格情報付きトランスポート" という 3 つの共通のセキュリティ モードがあり、ほとんどの定義済みバインディングでサポートされます。これ以外に、2 つのバインディングに固有の 2 つのモードがあります。BasicHttpBinding の "トランスポート資格情報専用" モードと、NetMsmqBinding の "両方" モードです。ここでは、3 つの共通のセキュリティモードである TransportMessage、および TransportWithMessageCredential に重点を置いて説明します。

ただし、これらのモードがすべての定義済みバインディングでサポートされるわけではありません。ここでは、WSHttpBinding クラスと NetTcpBinding クラスでモードを設定し、プログラムと構成の両方を使用してモードを設定する方法を示します。

WCF セキュリティ詳細については、 、「セキュリティの概要」、「サービスのセキュリティ保護」、および「サービスおよびクライアントのセキュリティ保護」を参照してください。トランスポート モードとメッセージ詳細については、 、「トランスポート セキュリティ」および「WCF のメッセージのセキュリティ」を参照してください。

コードでセキュリティ モードを設定するには

  1. 使用しているバインディング クラスのインスタンスを作成します。定義済みバインディングの一覧については、「システム標準のバインディング」を参照してください。この例では、WSHttpBinding クラスのインスタンスを作成します。

  2. Security プロパティから返されるオブジェクトの Mode プロパティを設定します。

    または、モードを Message (メッセージ) に設定します。コードは次のようになります。

    または、モードを TransportWithMessageCredential (メッセージ資格情報付きトランスポート) に設定します。コードは次のようになります。

  3. 次のコードに示すように、バインディングのコンストラクタでモードを設定することもできます。

ClientCredentialType プロパティの設定

モードを上記の 3 つの値のいずれかに設定すると、ClientCredentialType プロパティの設定方法が決まります。たとえば、WSHttpBinding クラスを使用し、モードを Transport に設定した場合、HttpTransportSecurity クラスの ClientCredentialType プロパティを適切な値に設定する必要があります。

トランスポート モードの ClientCredentialType プロパティを設定するには

  1. バインディングのインスタンスを作成します。

  2. Mode プロパティを Transport に設定します。

  3. ClientCredential プロパティに適切な値を設定します。プロパティを Windows に設定するコードを次に示します。

メッセージ モードの ClientCredentialType プロパティを設定するには

  1. バインディングのインスタンスを作成します。

  2. Mode プロパティを Message に設定します。

  3. ClientCredential プロパティに適切な値を設定します。プロパティを Certificate に設定するコードを次に示します。

構成でモードと ClientCredentialType プロパティを設定するには

  1. 構成ファイルの <bindings> 要素に、適切なバインディング要素を追加します。次の例では <wsHttpBinding> 要素を追加しています。

  2. <binding> 要素を追加し、name 属性に適切な値を設定します。

  3. <security> 要素を追加し、mode 属性を MessageTransport、または TransportWithMessageCredential に設定します。

  4. モードを Transport に設定した場合は、<transport> 要素を追加し、clientCredential 属性を適切な値に設定します。

    モードを "Transport" に設定し、<transport> 要素の clientCredentialType 属性を "Windows" に設定する例を次に示します。

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" />
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    または、security mode を "Message" に設定し、その後に <"message"> 要素を指定します。この例では、clientCredentialType を "Certificate" に設定しています。

    <wsHttpBinding>
    <binding name="MessageSecurity">
        <security mode="Message" />
           <message clientCredentialType = "Certificate" />
        </security>
    </binding>
    </wsHttpBinding >
    

    次に説明する TransportWithMessageCredential 値は、特殊なケースで使用されます。

TransportWithMessageCredential の使用

セキュリティ モードを TransportWithMessageCredential に設定した場合、トランスポート レベルのセキュリティを提供する実際の機構はトランスポートによって決まります。たとえば、HTTP プロトコルでは SSL (Secure Sockets Layer) over HTTP (HTTPS) を使用します。このため、トランスポート セキュリティ オブジェクト (HttpTransportSecurity など) の ClientCredentialType プロパティを設定しても無視されます。つまり、メッセージ セキュリティ オブジェクト (WSHttpBinding バインディングの場合は NonDualMessageSecurityOverHttp オブジェクト) の ClientCredentialType だけを設定できます。

詳細な情報については、次のページを参照してください。 「方法 : トランスポート セキュリティとメッセージ資格情報を使用する」を参照してください。

関連項目

タスク

方法 : SSL 証明書を使用してポートを構成する
方法 : トランスポート セキュリティとメッセージ資格情報を使用する

概念

WCF のメッセージのセキュリティ
セキュリティの概要
システム標準のバインディング

その他の技術情報

トランスポート セキュリティ
<security> of <wsHttpBinding>
<security> of <basicHttpBinding>
<security> of <netTcpBinding>