Отладка локальной службы WCF с обычной проверкой подлинности всегда возвращает 401 — неавторизованный

У меня проблема с доступом к службе .Net WCF, которая использует обычную проверку подлинности. В файле web.config сервера служба настроена следующим образом:

<services>
  <service behaviorConfiguration="serviceBehavior" name="api.GlobalService">
    <endpoint address="" behaviorConfiguration="restBehavior" binding="basicHttpBinding"
      bindingConfiguration="Basic" contract="api.IGlobalService" />
  </service>
</services>

с привязкой:

<bindings>
  <basicHttpBinding>
    <binding name="Basic">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Basic"/>
      </security>
    </binding>
  </basicHttpBinding>      
</bindings>

В моем конфигурационном файле IIS Express я включил базовую аутентификацию как таковую:

<basicAuthentication enabled="true" />

Я запускаю его в режиме отладки на локальном хосте, и мне не нужна настраиваемая базовая аутентификация, я хочу, чтобы она аутентифицировалась по учетным данным Windows. Я получаю доступ к серверу напрямую из браузера и ввожу свои учетные данные Windows при появлении запроса или из Postman, используя базовую аутентификацию и учетные данные, однако я всегда получаю 401. Я не авторизован для доступа к серверу, который я запускаю на своем собственном компьютере с моим собственные учетные данные. Любая помощь в том, что я делаю неправильно?


person Vladimir Moldovan    schedule 25.07.2018    source источник


Ответы (1)


Вы можете попробовать следующее в приложении, которое использует службу WCF.

WCFServiececlient.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
WCFServiececlient.ChannelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
person Joel    schedule 27.07.2018