方法: 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 クライアントと相互運用できるようにするには
WCF サービスのカスタム バインディングを定義します。
メッセージ エンコーディングに 2004 年 8 月版の WS-Addressing 仕様が使用されるように指定するには、カスタム バインディングを作成する必要があります。
サービスの構成ファイルの <bindings> に子要素として <customBinding> を追加します。
<binding> を <customBinding> に追加し、
name
属性を設定して、バインディングの名前を指定します。子要素として <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
*
mutualCertificate10Security
とmutualCertificate11Security
の設定不要のセキュリティ アサーションの主な相違点の 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 に設定します。WCF が 2004 年 8 月版の WS-Addressing 仕様を使用することを指定するには、<textMessageEncoding> を追加し、その
messageVersion
の値を Soap11WSAddressingAugust2004 に設定します。Note
SOAP 1.2 の使用時には、
messageVersion
属性を Soap12WSAddressingAugust2004 に設定します。
サービスがカスタム バインドを使用するように指定します。
<endpoint> 要素の
binding
属性をcustomBinding
に設定します。<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>