Проверка подлинности 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" />

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

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

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

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

Другие вопросы по тегам