次の方法で共有


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

Windows Communication Foundation (WCF) セキュリティには、トランスポート、メッセージ、および "メッセージ資格情報を使用したトランスポート" という、最も定義済みのバインディングで見られる 3 つの一般的なセキュリティ モードがあります。2 つの追加モードは、 BasicHttpBindingで見つかった "トランスポート資格情報のみ" モードと、 NetMsmqBindingにある "両方" モードの 2 つのバインドに固有です。 ただし、このトピックでは、 TransportMessageTransportWithMessageCredentialの 3 つの一般的なセキュリティ モードについて説明します。

すべての定義済みバインディングでこれらのモードがすべてサポートされているわけではないことに注意してください。 このトピックでは、 WSHttpBinding クラスと NetTcpBinding クラスでモードを設定し、プログラムと構成の両方でモードを設定する方法を示します。

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

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

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

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

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    または、次のコードに示すように、モードをメッセージに設定します。

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    または、次のコードに示すように、メッセージ資格情報を使用して転送するようにモードを設定します。

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. 次のコードに示すように、バインディングのコンストラクターでモードを設定することもできます。

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

ClientCredentialType プロパティの設定

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

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

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

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

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

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
    

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

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

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

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

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
    

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

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

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

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

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

    次の例では、モードを "Transport"" に設定し、clientCredentialType要素の<transport>属性を "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 プロトコルでは、HTTP (HTTPS) 経由で Secure Sockets Layer (SSL) が使用されます。 したがって、トランスポート セキュリティ オブジェクト (ClientCredentialType など) の HttpTransportSecurity プロパティの設定は無視されます。 つまり、メッセージ セキュリティ オブジェクトの ClientCredentialType のみを設定できます ( WSHttpBinding バインディングの場合は、 NonDualMessageSecurityOverHttp オブジェクト)。

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

こちらも参照ください