方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する

WCF サービスが WS-Addressing 仕様の 2004 年 8 月版を使用して構成されている場合、Windows Communication Foundation (WCF) サービスは Microsoft .NET クライアントの WSE (Web サービス拡張) 3.0 とネットワーク レベルで互換性があります。

WCF サービスを WSE 3.0 クライアントと相互運用できるようにするには

  1. WCF サービスのカスタム バインディングを定義します。

    メッセージ エンコーディングに 2004 年 8 月版の WS-Addressing 仕様が使用されるように指定するには、カスタム バインディングを作成する必要があります。

    1. サービスの構成ファイルの <Bindings> に子要素として customBinding Elementを追加します。

    2. binding elementcustomBinding Elementに追加して、name 属性を設定することにより、バインディングの名前を指定します。

    3. binding elementの子要素としてSecurity elementを追加することで、WSE 3.0 と互換性があるメッセージをセキュリティ保護するために使用される認証モードと WS-Security 仕様のバージョンを指定します。

      認証モードを設定するには、Security elementauthenicationMode 属性を設定します。認証モードは、WSE 3.0 の設定不要のセキュリティ アサーションとほぼ同等です。次の表に WCF の認証モードと WSE 3.0 の設定不要のセキュリティ アサーションとの対応を示します。

      WCF 認証モード WSE 3.0 の設定不要のセキュリティ アサーション

      AnonymousForCertificate

      anonymousForCertificateSecurity

      Kerberos

      kerberosSecurity

      MutualCertificate

      mutualCertificate10Security*

      MutualCertificate

      mutualCertificate11Security*

      UserNameOverTransport

      usernameOverTransportSecurity

      UserNameForCertificate

      usernameForCertificateSecurity

      * mutualCertificate10SecuritymutualCertificate11Security の設定不要のセキュリティ アサーションとの主な相違点の 1 つに、WSE が SOAP メッセージのセキュリティ保護で使用する WS-Security 仕様のバージョンがあります。mutualCertificate10Security では WS-Security 1.0 が使用され、mutualCertificate11Security では WS-Security 1.1 が使用されます。WCF では、WS-Security 仕様のバージョンは Security elementmessageSecurityVersion 属性で指定されます。

      セキュリティ保護された SOAP メッセージで使用される WS-Security 仕様のバージョンを設定するには、Security elementmessageSecurityVersion 属性を設定します。WSE 3.0 と相互運用するには、messageSecurityVersion 属性の値を WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 に設定します。

    4. WCF が 2004 年 8 月版の WS-Addressing 仕様を使用することを指定するには、textMessageEncoding elementを追加し、その messageVersion の値を Soap11WSAddressingAugust2004 に設定します。

      ms730049.note(ja-jp,VS.100).gif注 :
      SOAP 1.2 の使用時には、messageVersion 属性を Soap12WSAddressingAugust2004 に設定します。

  2. サービスがカスタム バインディングを使用するように指定します。

    1. Service Endpoint要素の binding 属性を customBinding に設定します。

    2. Service Endpoint要素の bindingConfiguration 属性をカスタム バインディングのbinding elementname 属性で指定されている値に設定します。

次のコード例では、Service.HelloWorldService が WSE 3.0 クライアントと相互運用するためにカスタム バインディングを使用するように指定します。カスタム バインディングには 2004 年 8 月版の WS-Addressing が指定され、WS-Security 1.1 の一連の仕様が、交換されるメッセージのエンコードに使用されます。メッセージは、AnonymousForCertificate 認証モードを使用してセキュリティ保護されます。

<configuration>
  <system.serviceModel>
    <services>
      <service 
        behaviorConfiguration="ServiceBehavior" 
        name="Service.HelloWorldService">
        <endpoint binding="customBinding" address=""
          bindingConfiguration="ServiceBinding"
          contract="Service.IHelloWorld"></endpoint>
      </service>
    </services>

    <bindings>
      <customBinding>
        <binding name="ServiceBinding">
          <security authenticationMode="AnonymousForCertificate"
                  messageProtectionOrder="SignBeforeEncrypt"
                  messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                  requireDerivedKeys="false">
          </security>
          <textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004"></textMessageEncoding>
          <httpTransport/>
        </binding>
      </customBinding>
    </bindings>
    <behaviors>
      <behavior name="ServiceBehavior" returnUnknownExceptionsAsFaults="true">
        <serviceCredentials>
          <serviceCertificate findValue="CN=WCFQuickstartServer" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
        </serviceCredentials>
      </behavior>
    </behaviors>
  </system.serviceModel>
</configuration>

参照

処理手順

方法 : システム指定のバインディングをカスタマイズする