0

Я написал веб-приложение для внутреннего использования на работе (не для более широкого Интернета), использующее аутентификацию Windows - ASP.NET, запрашивающий Windows для текущего набора полномочия. Метод аутентификации, вызванный из Page_PreInit защищенных страниц, вызывает ошибку 401, если имя пользователя не найдено в группе AD, которую я настроил.Принудительная пользовательская страница несанкционированного доступа HTTP 401 в ASP.NET

Я внедрил Earlz 'CustomErrorsFixer от Throwing an HttpException always sends back HTTP 500 error?, так как я тоже получал только 500 секунд назад. Теперь мои пользовательские страницы ошибок работают, и это здорово.

Разработка локально на сервере разработки Visual Studio, я обнаружил, что если у меня нет доступа, я просто перейду прямо к странице ошибок 401. Однако! Когда я публикую сайт на сервере IIS, если у пользователя нет доступа, он получает имя пользователя/пароль Windows (уродливый, маленький в XP). Это на самом деле очень удобно, потому что дает людям, которые вошли в другой домен, возможность ввести правильные учетные данные.

На данном этапе, когда запрос на ввод пароля появляется, если пользователь нажмет Отменить или побег, они идут на пользовательскую страницу 401, который говорит им, как идти о запросе доступа. ЕСЛИ, однако, они пытаются ввести имя пользователя и пароль, которые по умолчанию относятся к неправильному домену и, следовательно, являются неправильными учетными данными, им показана по умолчанию IIS 401 страница, которую я очень хочу избежать. Третий сценарий - если они вводят учетные данные CORRECT, их спрашивают 3 раза, а затем показывают страницу пользовательских ошибок.

Таким образом, пользователи видят пользовательскую страницу 401, если они являются «аутентифицированными» и стандартными IIS, если они не являются.

Однако, я находил, что большинство людей в ответ на запрос с коробкой имя пользователя/пароль, введите имя пользователя/пароль, без домена - который заканчивается тем, что неправильно и, следовательно, отправляя их в не-обычая IIS 401 страница , Кто-нибудь знает, как я могу это решить? Это очень раздражает, потому что люди должны видеть пользовательскую страницу 401, чтобы узнать, к какой группе им нужно запросить доступ!

В случае, если это имеет значение, браузер, который мы все используем, - IE8 на XP или IE9 в Windows 7. Пожалуйста, дайте мне знать, если я должен опубликовать любой код.

ответ

2

IIS7 перехватывает 401 вместе с несколькими другими стандартными кодами HTTP по умолчанию.

Попробуйте это:

<configuration> 
    <system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 
+0

Большое спасибо за ваше предложение. Я попробовал это и Response.TrySkipIisCustomErrors, но я боюсь, что не исправил его для меня. У меня нет прав на внесение изменений в сервер для IIS, есть ли что-нибудь еще, что я могу попробовать? – Chris

+0

Прошу прощения, это единственная настройка, о которой я лично знаю. Обычно это проблема. – JCab