Проверка подлинности IIS и Windows не допускает страниц с ошибками
Я пробовал это в последние два дня. Я не понимаю, в чем проблема. Я искал в Интернете, но не нашел никакого решения. Я попробовал все настройки IIS, такие как "Переместить переговоры вниз, отключить другую аутентификацию", но не работает. Итак, вот моя проблема: у меня есть веб-приложение для интрасети в ASP.NET, которое использует имя пользователя и пароли, хранящиеся в Active Directory. У меня есть пять разных страниц в моем приложении. Все страницы хранятся в отдельных папках со своими файлами web.config. Эти файлы web.config имеют имена пользователей, которым разрешено просматривать эту страницу следующим образом.
<authorization>
<allow users="Domainname\username"/>
</authorization>
Я хочу перенаправить тех пользователей, которых нет в списке выше, на страницу с другими ошибками с соответствующим сообщением. Я использовал это
protected void Application_EndRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Response.Status.StartsWith("401"))
{
HttpContext.Current.Response.ClearContent();
Response.Redirect("~/myerrorpage.aspx?myerrormsg=you are not allowed");
}
}
Это работает на локальном хосте, но когда я помещаю свое приложение в IIS, все авторизованные пользователи (те, кто в списке) также перенаправляют на страницу сообщения об ошибке.
За пределами IIS он работает правильно. Однако я не могу перенаправить неавторизованных пользователей на страницу сообщения об ошибке. Я также пытался с настройками страниц ошибок IIS, но у меня такая же проблема.
Пожалуйста, предложите мне, что я должен сделать, чтобы исправить это. Есть ли другой способ сделать это?
2 ответа
Если вы используете проверку подлинности Windows, вам следует помнить об этом. Если вы вручную включаете проверку подлинности Windows в IIS, не включайте приведенный ниже код в файл web.config.
<authentication mode="Windows" />
если вы воспользуетесь этим, это вызовет ту же проблему, что и я, изложенную выше в моем вопросе
Я не знаю точно, если это то, что проблема в вашем конкретном случае, но в целом, процесс таков:
- Браузер пытается подключиться анонимно при первом подключении
- Веб-сервер говорит: "Извините, вы не можете этого сделать, ошибка 401, вот способы аутентификации пользователя"
- Браузер перебирает аутентификацию (например, запрашивая учетные данные у пользователя)
- Браузер делает второй запрос с включенной информацией заголовка аутентификации
Я предполагаю, что вы не можете выполнить шаг (1), поймав первые 401 до того, как у пользователя появится возможность предоставить учетные данные. Вы можете проверить это с помощью инструментов F12 или таких инструментов, как Fiddler.