Проблема аутентификации Windows служб данных Windows - PullRequest
1 голос
/ 10 мая 2011

У меня есть служба данных WCF, и в web.config я использовал

<authentication mode="Windows" />

Я пытаюсь избежать любой конфигурации привязки, поэтому на данный момент не использовал ни одной.

Я получаю доступ к службе из приложения WPF.

IIS настроен только для «проверки подлинности Windows».

При доступе к службе я устанавливаю учетные данные

_proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

Но я получаю сообщение об ошибке «401 - Несанкционированный: доступ запрещен из-за неверных учетных данных».

Если я изменю его на следующее, служба будет работать правильно:

_proxy.Credentials = new NetworkCredential("username", "$password", "Domain");

При трассировкеэто в Fiddler, я замечаю, что когда я использую DefaultNetworkCredentials, заголовок аутентификации NTLM равен

Домен:

Пользователь: username@Domain.com

Хост: PC-59

При использовании нового успешного NetworkCredential («username», «$ password», «MyDomain») заголовок Auth:

Домен: MyDomain

Пользователь: username

Хост: ПК-59

PS.Для справки, вот моя конфигурация сервиса:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>          
      <serviceMetadata httpGetEnabled="true" />          
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />        

1 Ответ

0 голосов
/ 10 мая 2011

Взгляните на серию блогов аутентификации, которые Алекс пишет здесь: http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

В ней описаны различные схемы аутентификации и их поведение.Одним из которых является выше (и он также описывает, почему клиент делает два запроса и как преодолеть это, если хотите).

Надеюсь, это поможет,

Моника Фринту

...