У нас есть служба WCF, использующая встроенную проверку подлинности Windows, развернутую на выделенном сервере.
На клиентских машинах будет работать служба Windows [служба Windows использует учетную запись локальной системы]. Мы получаем ошибку, когда WCFServiceClient в службе Windows обращается к службе WCF. [Если служба Windows работает на сервере, она работает нормально]
System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLM'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
Мы не можем разрешить анонимный доступ или не можем удалить проверку подлинности Windows из службы WCF. Есть ли способ обойти эту проблему.
Конфигурация на стороне клиента:
<basicHttpBinding>
<binding name="BasicServiceHttpBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
Конфигурация сервера
<basicHttpBinding>
<binding>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
/binding>
</basicHttpBinding>