Странное поведение IIS для проверки подлинности Windows - PullRequest
7 голосов
/ 04 января 2010

У меня есть веб-служба 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

Ответы [ 5 ]

9 голосов
/ 10 января 2013

Я создавал новое веб-приложение MVC 4 ASP.NET и столкнулся с той же самой ошибкой, что и вы (Ошибка 401.2), когда я впервые попытался построить свой проект.

Я изменил параметрыв диспетчере IIS на моей машине разработки, чтобы отключить анонимную аутентификацию и включить аутентификацию Windows, но я все еще получал ошибку 401.2.

Я провел небольшое исследование и обнаружил, что могу изменить свойства своего проекта и решитьэта ошибка.

Обозреватель решений:

  • Выберите проект
  • Нажмите F4, чтобы открыть окно свойств

Окно свойств:

  • Измените «Анонимная аутентификация» на «Отключено»
  • Измените «Аутентификация Windows» на «Включено»

Я надеюсь, что это поможет другим людям, если это не решит вашу конкретную проблему.Если у вас есть те же настройки на вашем веб-сервере, он должен работать как положено.

2 голосов
/ 04 января 2010

Поскольку IUSR_* является анонимным пользователем по умолчанию, и анонимный доступ отключен в IIS, похоже, что в вашем файле web.config включен анонимный доступ. Убедитесь, что раздел authorization в вашем файле web.config выглядит примерно так:

<authorization>
    <deny users="?" /> <!-- Reject anonymous users -->
    <allow users="*" /> <!-- Accept all other users (or replace * with a list of users) -->
</authorization>
2 голосов
/ 04 января 2010

В файле web.config на сервере Server2 у вас есть: режим аутентификации = "Windows"?

1 голос
/ 08 июня 2011

У меня была такая же проблема с IIS7 на виртуальном сервере, мой логин был перенаправлен в папку с именем «content». В моем веб-конфиге был раздел «Местоположение», содержащий настройки аутентификации форм. Однако я настраивал его для аутентификации Windows, поэтому, когда IIS коснулся моей папки с содержимым, он не знал, какую аутентификацию использовать, поэтому возвратил ошибку. После удаления этого из конфига все работало нормально:

<location path="content">
    <system.web>
        <authorization>
            <deny users="?" />
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Спасибо

0 голосов
/ 13 января 2010

К сожалению, я так и не дошел до корня этой проблемы. В итоге мы перешли на новые серверы, и с новой конфигурацией IIS на обоих эта проблема ушла. Я подозреваю, что это может быть связано с тем, как NIC были настроены на сервере, так как это был виртуальный сервер с несколькими NIC. Но я все еще не знаю наверняка. Еще раз спасибо Хайнци и consultutah за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...