Аутентификация IIS и Windows не допускает появления страниц с ошибками

Аутентификация 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, но у меня та же проблема.

Пожалуйста, подскажите, что мне сделать, чтобы это исправить. Есть ли другой способ?

решение1

Я не знаю наверняка, является ли это проблемой в вашем конкретном случае, но в целом процесс таков:

  1. Браузер пытается подключитьсяанонимныйпри первом подключении
  2. Веб-сервер говорит: «Извините, вы не можете этого сделать, ошибка 401, вот способы аутентификации пользователя»
  3. Браузер выполняет аутентификацию (например, запрашивая у пользователя учетные данные)
  4. Браузер делает второй запрос, включая информацию заголовка аутентификации

Я предполагаю, что вы терпите неудачу на этапе (1), перехватывая первую ошибку 401 до того, как пользователь успеет предоставить учетные данные. Вы можете проверить это с помощью инструментов F12 или с помощью инструмента вроде Fiddler.

решение2

Если вы используете аутентификацию Windows, то вам следует помнить об этом. Если вы вручную включаете аутентификацию Windows в IIS, пожалуйста, не включайте приведенный ниже код в ваш web.config.

<authentication mode="Windows" />

если вы это используете, это вызовет ту же проблему, о которой я упомянул выше в своем вопросе.

Связанный контент