Доступ к службе WCF с помощью встроенной проверки подлинности Windows из службы Windows с использованием локальной учетной записи SYSTEM - PullRequest
3 голосов
/ 11 февраля 2010

У нас есть служба 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>
...