Ist es möglich, ein WCF-Client zu hacken Nachricht Credentials ohne SSL zu übergeben?
-
13-09-2019 - |
Frage
I schrieb vor einiger Zeit eine benutzerdefinierte WCF Bindung meiner Lastenausgleich Farm ermöglichen Dienste über IIS zu hosten. Der Grund für die benutzerdefinierte war verbindlich, dass jeder Server SSL nicht hat, aber die Fähigkeit benötigt, um ein Client-Credential von Benutzername + Passwort zu akzeptieren. Der Proxy vor dieser Farm hat SSL so dass der Verkehr außerhalb der Firewall verschlüsselt werden würde. Diese kundenspezifische Bindung funktioniert gut, aber jetzt bin ich an dem Punkt, wo ich den Verkehr von meinem Rechner vor Ort zu beobachten und wollte diesen w / out SSL in der Mischung zu tun.
Das Problem ist, das - auf dem .net-Client, wenn ich meinen Sicherheitsmodus gesetzt = „TransportWithMessageCredential“ Ich muß SSL, was ich den Spaß Fehler „ungültiges Schema, erwartete https“ get
Ist es möglich, etwas speziell für die Kunden zu „ignorieren“, dass SSL fehlt aber immer noch lassen Sie mich übergeben Sie die Benutzername + Passwort über die SOAP-Header?
schreibenLösung
Yup, ich schrieb einen Blog-Post über dieses eine Weile zurück "How To: SSL-Passthrough mit WCF --oder-- TransportWithMessageCredential über Plain-HTTP".
Die kurze davon ist, dass Sie Ihre eigene HttpTransportBindingElement
Unterklasse, welche „Lügen“ Sicherheit über die Bereitstellung erstellen müssen.
Andere Tipps
Es gibt einen Hotfix für .net 3.5 sp1, die eine AllowInsecureTransport Eigenschaft auf die Security fügt . Dies wird auch in .net 4 Beta 2.
Ich gehe davon aus, auf Ihrer benutzerdefinierten Bindung, dass Sie auch eine Fehlermeldung erhalten, wenn Sie nur Sicherheitsmodus verwenden = „Message“? Eine kundenspezifische Bindung war nicht wirklich notwendig, da (wenn ich mich nicht irre) können Sie den wsHttpBinding mit Sicherheitsmodus verwenden können = „Message“ (ohne eigenes SSL).
Eine weitere Alternative ist nur ein SSL-Zertifikat selbst zu erzeugen, installieren Sie es in IIS und implementieren Code ein Vertrauen all Zertifikatsrichtlinie in Ihrer Berufung, aber dies ist in der Regel verpönt (wie Benutzername und Passwörter über einen unsicheren Kanal sendet) .
Eine dritte Option ist Ihr Vertrag Operationen zu ändern, um Ihre Datenverträge Benutzernamen und Kennwörter (oder irgendeine Art von Token) als Parameter oder ändern zu akzeptieren, so dass Sie die Informationen zusammen mit dem, was Objekt senden können Sie bereits das Senden werden können.