次の方法で共有


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

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

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

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

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

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

    2. <binding><customBinding> に追加し、name 属性を設定して、バインディングの名前を指定します。

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

      認証モードを設定するには、<security>authenticationMode 属性を設定します。 認証モードは、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>messageSecurityVersion 属性で指定されます。

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

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

      Note

      SOAP 1.2 の使用時には、messageVersion 属性を Soap12WSAddressingAugust2004 に設定します。

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

    1. <endpoint> 要素の binding 属性を customBinding に設定します。

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

次のコード例では、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>

関連項目