У меня есть веб-служба ASP.NET 3.5 (SOAP старой школы, а не WCF), работающая на двух серверах, одинаково настроенных в IIS 6.0. Аутентификация / Контроль доступа настроены следующим образом:
- Включить анонимный доступ = False
- Встроенная проверка подлинности Windows = True
- Дайджест-проверка подлинности для серверов домена Windows = False
- Обычная аутентификация = Ложь
- .NET Passport аутентификация = False
В одном из веб-методов мне нужно получить идентификатор запрашивающего пользователя и проверить, что он находится в определенной группе Active Directory. Итак, первая строка кода в веб-методе такова:
var requestUser = HttpContext.Current.Request.LogonUserIdentity.Name;
По некоторым причинам результаты на двух серверах отличаются. Сервер1 работает как положено, выдав domain\UserId
. Однако Server2 выдает Server2\IUSR_SERVER2
. Кто-нибудь испытывал это раньше? Я нашел этот вопрос , но я почти уверен, что он не применим здесь как клиент, и оба сервера находятся в одном домене.
Дополнительная информация
Основываясь на ответе Хайнци, я добавил следующее в раздел <system.web>
в обоих файлах web.config:
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
Теперь Server1 ведет себя так же, как и в, он ведет себя так, как я хочу. Однако Server2 выдает 401.2: Несанкционированная ошибка:
Ошибка сервера в приложении '/'.
Доступ запрещен.
Описание: произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Сервер не может быть настроен для доступа к запрошенному URL.
Сообщение об ошибке 401.2 .: неавторизовано: сбой входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов аутентификации, включенных на веб-сервере. Обратитесь к администратору веб-сервера за дополнительной помощью.
Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.3603; ASP.NET версия: 2.0.50727.3053