У меня есть клиент веб-приложения, который взаимодействует со службой WCF.И клиент, и служба используют олицетворение из-за необходимости записи в одно и то же место на NAS для записи журналов и рабочих файлов.Проблема в том, что, хотя клиент может писать хорошо, служба не может.Оба используют System.IO.FileStream
для записи в NAS.Сначала мы думали, что это может быть связано с неправильной передачей разрешенных полномочий для пользователя домена.Мы все еще получили ту же ошибку.Если я проверю ServiceSecurityContext.Current.WindowsIdentity
, то смогу увидеть, что это пользователь домена, которого я ожидал, но странно то, что значение IIdentity.AuthenticationType
равно "Kerberos".Используя эту статью, мы проверили наш IIS NTAuthenticationProviders
и убедились, что он установлен на «Negotiate, NTLM».Я понимаю, что этот параметр IIS предназначен для связи между IIS, а не NAS, но мы хотели быть уверены.
Мы также выполнили трассировку и можем видеть согласование между рассматриваемым сервером и местоположением NAS.После того, как запрос отправлен, мы видим, что он пытается связаться с контроллером домена, но так как он не настроен, он не проходит аутентификацию.
В конце я просто пытаюсь выяснить, есть ли директива конфигурации, которую я могу установитьчтобы он не пытался использовать аутентификацию Kerberos при записи в NAS и, во-вторых, почему служба использует Kerberos, а клиент - нет.Я с радостью отредактирую это и добавлю все дополнительные элементы конфигурации, запрошенные, поэтому, пожалуйста, дайте мне знать.
Раздел привязки службы WCF web.config
<bindings>
<wsHttpBinding>
<binding name="default" maxReceivedMessageSize="200000">
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
Спасибо за любую помощь!