tags:

views:

76

answers:

1

Whenever I try to consume my web service through WCF, I receive this error:

The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLMnProviders'.

I know I have Kerberos setup correctly for this environment (it's calling SharePoint 3.0 services that I use in other applications). Integrated Windows security has been working great but this is the first time I've tried to consume it through WCF.

I've gone through this site many times to ensure I have the right header. Is the above error failing because it's expecting "Negotiate" but it's receiving "Negotiate,NTLMnProviders"? I know I can change my headers through that site but it always has 'Negotiate,NTLMnProviders' for the Kerberos header. Anyone got any ideas?

A: 

Not really an answer but here are some more details...

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="ListsSoap">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" proxyCredentialType="Windows"/>  
          </security>          
        </binding>
        <binding name="SiteDataSoap">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://something.com/_vti_bin/lists.asmx"
          binding="basicHttpBinding" bindingConfiguration="ListsSoap"
          contract="WSS_Server.ListsSoap" name="ListsSoap">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <endpoint address="http://something.com/_vti_bin/SiteData.asmx"
          binding="basicHttpBinding" bindingConfiguration="SiteDataSoap"
          contract="WSS_Server_SiteData.SiteDataSoap" name="SiteDataSoap">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

And then I'm instantiating my proxy and calling this in code...

proxy.ClientCredentials.Windows.AllowedImpersonationLevel =
                System.Security.Principal.TokenImpersonationLevel.Impersonation;

proxy.ClientCredentials.Windows.AllowNtlm = false;

// Web service call
proxy.GetWeb(...);
RailRhoad