Назад | Перейти на главную страницу

Проверка подлинности 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, но у меня такая же проблема.

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

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

<authentication mode="Windows" />

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

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

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

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