title: (401) Unauthorized error : WCF security/binding
body: <p>I have a WCF web service, and a client both on the same machine. Accessing the WCF web service directly using the browser works, but the client can't connect; error message below. Any ideas? Integrated Windows Auth in IIS is used for both client and server. </p>
  
  <pre><code>The remote server returned an error: (401) Unauthorized. 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
  
  Exception Details: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
  
  Source Error: 
  
  An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  
  
  Stack Trace: 
  
  [WebException: The remote server returned an error: (401) Unauthorized.]
     System.Net.HttpWebRequest.GetResponse() +5313085
     System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +54
  
  [MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLM'.]
     System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +7594687
     System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp; msgData, Int32 type) +275
     HRPaysService.IService1.GetAlert() +0
     HRPaysService.Service1Client.GetAlert() +15
     _Default.Page_Load(Object sender, EventArgs e) +138
     System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
     System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
     System.Web.UI.Control.OnLoad(EventArgs e) +99
     System.Web.UI.Control.LoadRecursive() +50
     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
  </code></pre>
  
  <p>Client:</p>
  
  <pre><code>  &lt;system.serviceModel&gt;
       &lt;bindings&gt; 
          &lt;basicHttpBinding&gt; 
             &lt;binding name="basicBinding"&gt; 
                &lt;security mode="TransportCredentialOnly"&gt;
                    &lt;transport clientCredentialType="Windows" 
                               proxyCredentialType="Windows" realm="" /&gt;
                    &lt;message clientCredentialType="UserName" 
                             algorithmSuite="Default" /&gt;
                &lt;/security&gt; 
             &lt;/binding&gt; 
          &lt;/basicHttpBinding&gt; 
       &lt;/bindings&gt; 
       &lt;client&gt;
           &lt;endpoint 
               address="http://hrpaysservice/service1.svc" 
               binding="basicHttpBinding"
               bindingConfiguration="basicBinding" 
               contract="HRPaysService.IService1"&gt;
           &lt;/endpoint&gt;
       &lt;/client&gt;
    &lt;/system.serviceModel&gt;
  </code></pre>
  
  <p>Server:</p>
  
  <pre><code>&lt;system.serviceModel&gt;
     &lt;bindings&gt; 
        &lt;basicHttpBinding&gt; 
           &lt;binding name="basicBinding"&gt; 
              &lt;security mode="TransportCredentialOnly"&gt;
                  &lt;transport clientCredentialType="Windows" 
                             proxyCredentialType="Windows" realm="" /&gt;
                  &lt;message clientCredentialType="UserName" 
                           algorithmSuite="Default" /&gt;
              &lt;/security&gt; 
           &lt;/binding&gt; 
        &lt;/basicHttpBinding&gt; 
     &lt;/bindings&gt; 
     &lt;client&gt;
         &lt;endpoint 
             address="http://hrpaysservice/service1.svc" 
             binding="basicHttpBinding"
             bindingConfiguration="basicBinding" 
             contract="HRPaysService.IService1"&gt;
         &lt;/endpoint&gt;
  &lt;/client&gt;
  &lt;/system.serviceModel&gt;
  </code></pre>