Vorgehensweise: Konfigurieren von WCF-Diensten für die Zusammenarbeit mit WSE3.0-Clients
Windows Communication Foundation (WCF)-Dienste sind auf niedriger Ebene mit Clients von Web Services Enhancements 3.0 für Microsoft .NET (WSE) kompatibel, wenn WCF-Dienste für die Verwendung der Version der WS-Addressing-Spezifikation 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 den <Bindungen> der Konfigurationsdatei des Diensts ein untergeordnetes <customBinding> hinzu.
Geben Sie einen Namen für die Bindung an, indem Sie dem <customBinding> eine <Bindung> hinzufügen und das Attribut
name
festlegen.Geben Sie einen Authentifizierungsmodus und die Version der WS-Sicherheitsspezifikationen an, die zum Schutz von mit WSE 3.0 kompatiblen Nachrichten verwendet werden. Fügen Sie dazu der <Bindung> ein untergeordnetes <security> hinzu.
Zum Festlegen des Authentifizierungsmodus legen Sie das Attribut
authenticationMode
der <Sicherheit> fest. Ein Authentifizierungsmodus ist mit einer sofort verwendbaren WSE 3.0-Sicherheitsassertion vergleichbar. In der folgenden Tabelle werden die Authentifizierungsmodi in WCF sofort verwendbaren WSE 3.0-Sicherheitsassertions zugeordnet.WCF-Authentifizierungsmodus Sofort verwendbare WSE 3.0-Sicherheitsassertion AnonymousForCertificate anonymousForCertificateSecurity
Kerberos kerberosSecurity
MutualCertificate mutualCertificate10Security
*MutualCertificate mutualCertificate11Security
*UserNameOverTransport usernameOverTransportSecurity
UserNameForCertificate usernameForCertificateSecurity
* Einer der Hauptunterschiede zwischen
mutualCertificate10Security
und sofort verwendbarenmutualCertificate11Security
-Sicherheitsassertions ist die Version der WS-Sicherheitsspezifikation, die WSE zum Schutz der SOAP-Nachrichten verwendet. FürmutualCertificate10Security
wird WS-Security 1.0 verwendet, wohingegen WS-Security 1.1 fürmutualCertificate11Security
verwendet wird. Bei WCF wird die Version der WS-Sicherheitsspezifikation im AttributmessageSecurityVersion
der <Sicherheit> angegeben.Zum Festlegen der Version der WS-Sicherheitsspezifikation, die zum Schutz von SOAP-Nachrichten verwendet wird, legen Sie das Attribut
messageSecurityVersion
der <Sicherheit> fest. Für die Zusammenarbeit mit WSE 3.0 legen Sie den Wert desmessageSecurityVersion
-Attributs auf WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 fest.Geben Sie an, dass die Version der WS-Addressing-Spezifikation vom August 2004 von WCF verwendet wird, indem Sie <textMessageEncoding> hinzufügen und für
messageVersion
den Wert 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 Attribut
binding
des <Endpunkt>-Elements aufcustomBinding
fest.Legen Sie das Attribut
bindingConfiguration
des <Endpunkt>-Elements auf den im Attributname
der <Bindung> 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>