Ich rufe zu einem SOAP-Dienst auf, der die Windows-Authentifizierung verwendet. Dies ist meine Konfiguration:Verhindern von Verhandlungshandshake bei nachfolgenden Serviceaufrufen
new BasicHttpBinding
{
Security = new BasicHttpSecurity
{
Mode = BasicHttpSecurityMode.TransportCredentialOnly,
Transport = new HttpTransportSecurity
{
ClientCredentialType = HttpClientCredentialType.Windows
}
},
};
Und ich bin die Anmeldeinformationen manuell hier einrichten, wenn der Benutzer auf einer anderen Domäne ist:
client.ClientCredentials.Windows.ClientCredential.Domain = "...";
client.ClientCredentials.Windows.ClientCredential.UserName = "...";
client.ClientCredentials.Windows.ClientCredential.Password = "...";
ich bemerkt habe, dass jeder Anruf ich durch die Client-Proxy ist in drei Reisen resultierende:
Request: POST /EndPoint (no auth)
Response: 401 Unauthorized, WWW-Authenticate: Negotiate
Request: POST /EndPoint, Authorization: Negotiate
Response: 401 Unauthorized, WWW-Authenticate: Negotiate <gunk>
Request: Post /EndPoint, Authorization: Negotiate <gunk>
Response: 200 OK
Wenn dies nur auf den ersten Anruf kam es nicht so schlimm wäre, aber es geschieht auf alle nachfolgenden Anrufe an die gleiche Client-Proxy-Instanz.
Der Server, den ich anrufe, ist nicht unter meiner Kontrolle und hat eine nicht unbedeutende Menge an Latenz, also würde ich gerne einen Weg finden, diese redundanten Reisen zu entfernen. Ist es möglich?
ich denke, es versucht verschiedene Versionen der Verschlüsselung tls1.0, 1.1 usw. Sie können sie in einer bestimmten Reihenfolge festlegen. Es könnte auch ein serverseitiges Problem sein, es erwartet zuerst die höchste Form usw., aber das ist nur eine sehr vage Schätzung –
@CoryNelson WCF-Dienst von IIS gehostet? –