Другое - HTTP запрос неавторизованной ошибки - PullRequest
0 голосов
/ 11 сентября 2009

Всякий раз, когда я пытаюсь использовать свой веб-сервис через WCF, я получаю эту ошибку:

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

Я знаю, что Kerberos правильно настроен для этой среды (она вызывает службы SharePoint 3.0, которые я использую в других приложениях). Интегрированная безопасность Windows работает отлично, но я впервые пытаюсь использовать ее через WCF.

Я много раз просматривал этот сайт , чтобы убедиться, что у меня есть правильный заголовок. Ошибка выше, терпит неудачу, потому что это ожидает "Согласование", но это получает "Согласование, NTLMnProviders"? Я знаю, что могу изменить свои заголовки через этот сайт, но для заголовка Kerberos всегда есть «Negotiate, NTLMnProviders». У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 14 сентября 2009

Не совсем ответ, но вот некоторые подробности ...

<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>

А потом я создаю свой прокси-сервер и вызываю его в коде ...

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

proxy.ClientCredentials.Windows.AllowNtlm = false;

// Web service call
proxy.GetWeb(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...