Basic-HTTP-Authentifizierung über HTTPS mit WCF
Ich rufe ein Webservice über WCF (w/.NET 4.0), erfordert grundlegende HTTP-Authentifizierung (mit Benutzername und Passwort.) über HTTPS. Während, ich denke ich habe alles richtig eingestellt, ich bin immer ein 401-Fehler, wenn ich den Aufruf an den Dienst. Ich überwacht den HTTP-Verkehr und bemerkt, dass WCF scheint zu ignorieren, dass ich sagte, Sie verwenden einen authorization-header mit dem Benutzernamen und Passwort, denn keiner ist geschickt in die Anfrage. Hier ist meine Konfiguration unten. Irgendwelche Ideen? Danke!
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicAuthSecured">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://REMOVED FOR CONFIDENTIALITY"
binding="basicHttpBinding" bindingConfiguration="BasicAuthSecured"
contract="Five9.WsAdmin" name="WsAdminPort" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Und hier ist mein code:
var five_9_client = new WsAdminClient();
five_9_client.ClientCredentials.UserName.UserName = “REMOVED FOR CONFIDENTIALITY";
five_9_client.ClientCredentials.UserName.Password = "REMOVED FOR CONFIDENTIALITY";
var call_log_response = five_9_client.getCallLogReport(call_log); //Bombing out here
Ich bekomme diese exception:
{"Die HTTP-Anforderung ist nicht autorisierte mit client-Authentifizierungsschema "Basic". Der authentication header vom server empfangen wurde "."}
Mit der inneren Ausnahme:
{"Der Remoteserver hat einen Fehler zurückgegeben: (401) nicht autorisiert."}
Stack trace:
System.ServiceModel.- Kanäle.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, WebException responseException, HttpChannelFactory Fabrik)
System.ServiceModel.- Kanäle.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory Fabrik, WebException responseException, ChannelBinding channelBinding)
System.ServiceModel.- Kanäle.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan-timeout)
System.ServiceModel.- Kanäle.RequestChannel.Request(Message message, TimeSpan timeout)
System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
System.ServiceModel.- Kanäle.ServiceChannel.Call(String Aktion, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
System.ServiceModel.- Kanäle.ServiceChannel.Call(String Aktion, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
System.ServiceModel.- Kanäle.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime Betrieb)
System.ServiceModel.- Kanäle.ServiceChannelProxy.Invoke(IMessage message)
- Verwenden Sie
basicHttpBinding
überWSHttpBinding
weil Sie die Notwendigkeit der Unterstützung von SOAP 1.1-clients?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Lösung: im Grunde war das problem, dass der header musste angebracht werden, um die aktuelle Anforderung, etwa so:
Kann es sein, dass das problem ist, dass Sie nicht die client-Anmeldeinformationen finden Sie unter http://msdn.microsoft.com/en-us/library/ms731925.aspx
Entweder nicht gesendet, oder die Standard-client-Anmeldeinformationen-geben Sie nicht senden Sie die Anmeldeinformationen in der header.