Instrukcje: Konfigurowanie usług WCF pod kątem współdziałania z klientami programu WSE 3.0
Usługi Windows Communication Foundation (WCF) są na poziomie przewodu zgodne z rozszerzeniami usług sieci Web w wersji 3.0 dla klientów platformy Microsoft .NET (WSE), gdy usługi WCF są skonfigurowane do używania specyfikacji adresowania WS z sierpnia 2004 r.
Aby umożliwić usłudze WCF współdziałanie z klientami programu WSE 3.0
Zdefiniuj powiązanie niestandardowe dla usługi WCF.
Aby określić, że specyfikacja adresowania WS z sierpnia 2004 r. jest używana do kodowania komunikatów, należy utworzyć powiązanie niestandardowe.
Dodaj podrzędne <powiązanie niestandardowe> do <powiązań> pliku konfiguracji usługi.
Określ nazwę powiązania, dodając powiązanie do parametru<>
name
customBinding i ustawiając> atrybut.<Określ tryb uwierzytelniania i wersję specyfikacji WS-Security, które są używane do zabezpieczania komunikatów zgodnych z programem WSE 3.0, dodając zabezpieczenia podrzędne <do <powiązania>.>
Aby ustawić tryb uwierzytelniania, ustaw
authenticationMode
atrybut zabezpieczeń<>. Tryb uwierzytelniania jest w przybliżeniu odpowiednikiem asercji zabezpieczeń w programie WSE 3.0. Poniższa tabela mapuje tryby uwierzytelniania w programie WCF na gotowe asercji zabezpieczeń w programie WSE 3.0.Tryb uwierzytelniania WCF Asercja zabezpieczeń programu WSE 3.0 AnonymousForCertificate anonymousForCertificateSecurity
Kerberos kerberosSecurity
MutualCertificate mutualCertificate10Security
*MutualCertificate mutualCertificate11Security
*UserNameOverTransport usernameOverTransportSecurity
UserNameForCertificate usernameForCertificateSecurity
* Jedną z podstawowych różnic między
mutualCertificate10Security
asercjami zabezpieczeń imutualCertificate11Security
pod kluczem jest wersja specyfikacji WS-Security, która jest używana przez usługę WSE do zabezpieczania komunikatów PROTOKOŁU SOAP. W przypadkumutualCertificate10Security
programu jest używana wersja WS-Security 1.0, natomiast w programie WS-Security 1.1 jest używany programmutualCertificate11Security
. W przypadku programu WCF wersja specyfikacji WS-Security jest określona w atrybucie <messageSecurityVersion
zabezpieczeń.>Aby ustawić wersję specyfikacji WS-Security, która jest używana do zabezpieczania komunikatów PROTOKOŁU SOAP, ustaw
messageSecurityVersion
atrybut zabezpieczeń<>. Aby współpracować z programem WSE 3.0, ustaw wartość atrybutumessageSecurityVersion
na WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.Określ, że wersja specyfikacji WS-Addressing z sierpnia 2004 r. jest używana przez usługę <WCF przez dodanie textMessageEncoding> i ustawienie
messageVersion
wartości na Soap11WSAddressingAugust2004wartość .Uwaga
W przypadku korzystania z protokołu SOAP 1.2 ustaw
messageVersion
atrybut na Soap12WSAddressingAugust2004.
Określ, że usługa używa powiązania niestandardowego.
binding
Ustaw atrybut elementu punktu końcowego><na .customBinding
bindingConfiguration
Ustaw atrybut elementu punktu końcowego>< na wartość określoną wname
atrybucie< powiązania> niestandardowego.
Przykład
Poniższy przykład kodu określa, że Service.HelloWorldService
używa niestandardowego powiązania do współdziałania z klientami programu WSE 3.0. Powiązanie niestandardowe określa, że wersja WS-Addressing i WS-Security 1.1 zestawu specyfikacji z sierpnia 2004 r. jest używana do kodowania wymienianych komunikatów. Komunikaty są zabezpieczone przy użyciu AnonymousForCertificate trybu uwierzytelniania.
<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>