HTTP-запрос не авторизован с помощью схемы аутентификации клиента «Согласование» - PullRequest
10 голосов
/ 27 марта 2012

1) На компьютере A - я создал службу WCF и разместил ее на IIS 5.1 на компьютере A. который работает под этим URL http://mydomain/SetupPOCService/Service1.svc

2) На компьютере B - я создал веб-приложение Asp.net. В этом приложении я попытался использовать ранее созданный сервис WCF, который теперь размещен на другом компьютере, то есть на машине А. Когда я запускаю это веб-приложение из среды Visual Studio, оно обращается к службе WCF этой машины и получает данные.

--- Хорошо до здесь ---

3) На компьютере B - теперь я разместил свое веб-приложение в IIS5.1 Это веб-приложение работает нормально, но не может получить доступ к службе WCF от MachineA и выдает такую ​​ошибку.

Удаленный сервер возвратил ошибку: (401) Не авторизован.

StackTrace [MessageSecurityException: HTTP-запрос не авторизован с помощью схемы аутентификации клиента «Согласование». Заголовок аутентификации, полученный от сервера, был 'Negotiate, NTLM'.]

Я пробовал так много вещей, но это помогло. Пожалуйста, введите ваши данные ...

Ниже представлен Web.Config для клиента

 <security mode="TransportCredentialOnly">
  <transport clientCredentialType="Windows" proxyCredentialType="None"
   realm="" />
  <message clientCredentialType="UserName" algorithmSuite="Default" />
 </security>

Ниже Web.Config для сервера

<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
 </behavior>

Ответы [ 2 ]

7 голосов
/ 27 марта 2012

Перейти к IIS.Вы найдете то, что называется «базовые настройки».Добавьте ваши разрешения и разрешения машины.Возможно, вам не разрешен доступ к некоторым границам в вашей сети.

  • Перейдите в «Пуск | Настройки | Панель управления | Администрирование | Локальные настройки безопасности».
  • Перейти кМестные Политики |Параметры безопасности
  • Выбор безопасности сети: уровень аутентификации Lan Manager
  • Выберите 2-е значение в выпадающем меню «Отправить» LM & NTLM .........

Также ClientCredentialType=Windows делает заголовок аутентификации Negotiate, что недостаточно для работы с Negotiate, NTLM

Однако установка client.ClientCredentials.Windows.AllowNTLM = True добавляет необходимый NTLM в заголовок аутентификации, и это работает.

Также попробуйте запустить VS как администратор на всякий случай.:) * * 1021

0 голосов
/ 12 февраля 2016

Мое решение - установить ClientCredentialType="Ntlm".

...