У меня есть две виртуальные директории под одним сайтом на одной машине. Они работают на IIS6 в качестве удостоверения сетевой службы. Одним из приложений является веб-служба, которая должна быть заблокирована, чтобы к ней могли обращаться только определенные учетные данные. Второе приложение - это общедоступный сайт, который должен иметь доступ к веб-службе.
Я проверил встроенную проверку подлинности Windows и отключил анонимный доступ в веб-службе. Я дал пользователю MACHINE_NAME $ права на чтение и выполнение каталога веб-службы (вероятно, не требуется).
Когда я вызываю веб-сервис с публичного сайта, это выглядит так:
var service = new WebService(ConfigurationManager.AppSettings["Url"]);
service.Credentials = CredentialCache.DefaultNetworkCredentials;
service.PreAuthenticate = true;
ServicePointManager.ServerCertificateValidationCallback = ValidateCertificate;
var result = service.CallWebService(str);
Я ожидал бы, что учетные данные учетной записи сетевой службы будут передаваться веб-службе и возвращать значение из CallWebService. Я получаю ошибку 401.
Я проверил журналы IIS, и при вызове метода веб-сервис делает три сообщения, но они не содержат учетные данные.
Я также проверил журналы событий безопасности, и при вызове метода происходит событие Failure Audit, которое выглядит примерно так:
Logon Failure:
Reason: An error occurred during logon
User Name: MACHINE_NAME$
Domain: DOMAIN_NAME
Logon Type: 3
Logon Process: 8e
Authentication Package: NTLM
...