Tut WCF unterstützt WS-Security mit SOAP 1.1?
Brauche ich um eine 3. Web services, die erfordern, dass WS-Security. Erstellt habe ich eine WCF-Endpunkt mit der folgenden Konfiguration:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="TestBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="TestBehavior">
<callbackDebug includeExceptionDetailInFaults="true" />
<clientCredentials>
<clientCertificate findValue="Acme" storeLocation="CurrentUser" storeName="My" x509FindType="FindBySubjectName" />
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="https://acme.com/webservices" binding="wsHttpBinding" bindingConfiguration="TestBinding" behaviorConfiguration="TestBehavior" contract="AcmeContract" name="AcmeEndpoint"></endpoint>
</client>
</system.serviceModel>
Das problem ist, dass die 3rd-party-Servern werfen die folgende Ausnahme:
Erhielt Protokoll
'_http://schemas.xmlsoap.org/wsdl/soap12/',
erforderliche Protokoll
'_http://schemas.xmlsoap.org/wsdl/soap/'.
Ich verstehen, dass die Verwendung der wsHttpBinding dazu führt, dass WCF senden einer SOAP-1.2-Anforderung während der Verwendung der "basicHttpBinding" wird in Folge einer SOAP 1.1-Anfrage. Seit der WS-Security-Teile sind erforderlich, wie ich es verstehe, muss ich das wsHttpBinding. Meine Frage ist, wie kann ich erzwingen, eine SOAP 1.1-Anfrage? Was sind meine Optionen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Nutzung von WS-Addressing (
wsHttpBinding
), aber mit SOAP 1.1 SOAP 1.2 wird die Standardeinstellung), müssen Sie zum definieren einer benutzerdefinierten WCF-Bindung (z.B. in der config), und verwenden Sie, dass:und dann in Ihre Endpunkt-definition, Verwendung:
Natürlich, verlängern Sie die benutzerdefinierte Bindung oben definiert sind, mit zusätzlichen Eigenschaften, z.B.
<reliableMessaging>
oder andere.Weitere, sehr detaillierte, sehr nützliche Informationen über die WCF-Bindungen und-wie zu "Komponieren" Sie Ihre eigenen benutzerdefinierten Bindungen in der Konfiguration, Lesen Sie dieses ausgezeichnete MSDN-Artikel Service-Station: WCF-Bindungen In die Tiefe von Aaron Skonnard.
<httpTransport/>
mit<httpsTransport/>
.Müssen Sie entweder
BasicHttpBinding
die auch unterstütztTransportWithMessageCredentials
(SOAP 1.1 + HTTPS + WS-Security-X. 509 Certificate Token profile) oder erstellen Sie benutzerdefinierte Bindung, basierend auf alle Ihre Bedürfnisse.