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 über WSHttpBinding weil Sie die Notwendigkeit der Unterstützung von SOAP 1.1-clients?
InformationsquelleAutor Austin | 2011-12-30
Schreibe einen Kommentar