Vorgehensweise: Konfigurieren von WCF-Diensten für die Zusammenarbeit mit WSE3.0-Clients
Windows Communication Foundation (WCF)-Dienste sind auf niedriger Ebene mit Diensten von Web Services Enhancements (3.0) WSE für Microsoft .NET-Clients kompatibel, wenn WCF-Dienste für die Verwendung der Version der WS-Adressierungsspezifikation vom August 2004 konfiguriert sind.
So konfigurieren Sie einen WCF-Dienst für die Zusammenarbeit mit WSE3.0-Clients
Definieren Sie eine benutzerdefinierte Bindung für den WCF-Dienst.
Es muss eine benutzerdefinierte Bindung erstellt werden, um anzugeben, dass die Version der WS-Adressierungsspezifikation vom August 2004 für die Nachrichtencodierung verwendet wird.
Fügen Sie ein untergeordnetes customBinding Element zu <Bindings> der Konfigurationsdatei des Diensts hinzu.
Geben Sie einen Namen für die Bindung an, indem Sie binding element zu customBinding Element hinzufügen und das name-Attribut festlegen.
Legen Sie einen Authentifizierungsmodus und die Version der WS-Sicherheitsspezifikationen fest, die zur Sicherung von Nachrichten verwendet werden, die mit WSE 3.0 kompatibel sind. Fügen Sie dazu ein untergeordnetes Security element zu binding element hinzu.
Zum Festlegen des Authentifizierungsmodus legen Sie das authenicationMode-Attribut von Security element fest. Ein Authentifizierungsmodus ist mit einer sofort verwendbaren WSE 3.0-Sicherheitsassertion vergleichbar. In der folgenden Tabelle werden die Authentifizierungsmodi von WCF sofort verwendbaren WSE 3.0-Sicherheitsassertionen zugeordnet.
WCF-Authentifizierungsmodus Sofort verwendbare WSE 3.0-Sicherheitsassertion anonymousForCertificateSecurity
kerberosSecurity
mutualCertificate10Security*
MutualCertificate
mutualCertificate11Security*
usernameOverTransportSecurity
usernameForCertificateSecurity
* Einer der Hauptunterschiede zwischen mutualCertificate10Security und sofort verwendbaren mutualCertificate11Security-Sicherheitsassertionen besteht in der Version der WS-Sicherheitspezifikation, die WSE zum Schutz der SOAP-Nachrichten verwendet. Für mutualCertificate10Security wird WS-Security 1.0 verwendet, wohingegen WS-Security 1.1 für mutualCertificate11Security verwendet wird. Für WCF wird die Version der WS-Sicherheitsspezifikation im messageSecurityVersion-Attribut von Security element angegeben.
Um die Version der WS-Sicherheitsspezifikation anzugeben, die zum Schutz von SOAP-Nachrichten verwendet wird, legen Sie das messageSecurityVersion-Attribut von Security element fest. Für die Zusammenarbeit mit WSE 3.0 legen Sie den Wert des messageSecurityVersion-Attributs auf WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 fest.
Geben Sie an, dass die Version der WS-Adressierungsspezifikation vom August 2004 von WCF verwendet wird, indem Sie textMessageEncoding element hinzufügen und messageVersion auf den Wert für Soap11WSAddressingAugust2004 festlegen.
Hinweis: Wenn Sie SOAP 1.2 verwenden, legen Sie das messageVersion-Attribut auf Soap12WSAddressingAugust2004 fest.
Geben Sie an, dass der Dienst die benutzerdefinierte Bindung verwendet.
Legen Sie das binding-Attribut des Service Endpoint-Elements auf customBinding fest.
Legen Sie das bindingConfiguration-Attribut des Service Endpoint-Elements auf den im name-Attribut von binding element für die benutzerdefinierte Bindung angegebenen Wert fest.
Beispiel
Das folgende Codebeispiel gibt an, dass Service.HelloWorldService
eine benutzerdefinierte Bindung zur Zusammenarbeit mit WSE 3.0-Clients verwendet. Die benutzerdefinierte Bindung gibt an, dass die Version der WS-Adressierungsspezifikation vom August 2004 und die Spezifikationen von WS-Security 1.1 zum Codieren der ausgetauschten Nachrichten verwendet werden. Die Nachrichten werden mit dem AnonymousForCertificate-Authentifizierungsmodus geschützt.
<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>
Siehe auch
Aufgaben
Vorgehensweise: Anpassen einer vom System bereitgestellten Bindung