方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する
WCF サービスが WS-Addressing 仕様の 2004 年 8 月版を使用して構成されている場合、Windows Communication Foundation (WCF) サービスは Microsoft .NET クライアントの WSE (Web サービス拡張) 3.0 とネットワーク レベルで互換性があります。
WCF サービスを WSE 3.0 クライアントと相互運用できるようにするには
WCF サービスのカスタム バインディングを定義します。
メッセージ エンコーディングに 2004 年 8 月版の WS-Addressing 仕様が使用されるように指定するには、カスタム バインディングを作成する必要があります。
サービスの構成ファイルの <Bindings> に子要素として customBinding Elementを追加します。
binding elementを customBinding Elementに追加して、name 属性を設定することにより、バインディングの名前を指定します。
binding elementの子要素としてSecurity elementを追加することで、WSE 3.0 と互換性があるメッセージをセキュリティ保護するために使用される認証モードと WS-Security 仕様のバージョンを指定します。
認証モードを設定するには、Security elementの authenicationMode 属性を設定します。認証モードは、WSE 3.0 の設定不要のセキュリティ アサーションとほぼ同等です。次の表に WCF の認証モードと WSE 3.0 の設定不要のセキュリティ アサーションとの対応を示します。
WCF 認証モード WSE 3.0 の設定不要のセキュリティ アサーション anonymousForCertificateSecurity
kerberosSecurity
mutualCertificate10Security*
MutualCertificate
mutualCertificate11Security*
usernameOverTransportSecurity
usernameForCertificateSecurity
* mutualCertificate10Security と mutualCertificate11Security の設定不要のセキュリティ アサーションとの主な相違点の 1 つに、WSE が SOAP メッセージのセキュリティ保護で使用する WS-Security 仕様のバージョンがあります。mutualCertificate10Security では WS-Security 1.0 が使用され、mutualCertificate11Security では WS-Security 1.1 が使用されます。WCF では、WS-Security 仕様のバージョンは Security elementの messageSecurityVersion 属性で指定されます。
セキュリティ保護された SOAP メッセージで使用される WS-Security 仕様のバージョンを設定するには、Security elementの messageSecurityVersion 属性を設定します。WSE 3.0 と相互運用するには、messageSecurityVersion 属性の値を WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 に設定します。
WCF が 2004 年 8 月版の WS-Addressing 仕様を使用することを指定するには、textMessageEncoding elementを追加し、その messageVersion の値を Soap11WSAddressingAugust2004 に設定します。
注 : SOAP 1.2 の使用時には、messageVersion 属性を Soap12WSAddressingAugust2004 に設定します。
サービスがカスタム バインディングを使用するように指定します。
Service Endpoint要素の binding 属性を customBinding に設定します。
Service Endpoint要素の bindingConfiguration 属性をカスタム バインディングのbinding elementの 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>