Получение 401 ошибки на IIS 6
Я запускаю приложение веб-форм asp.net с аутентификацией Windows на IIS 6.0, и в журналах IIS есть следующие записи:
2014-01-15 14:51:26 W3SVC1 192.168.21.16 GET /MyApp/myPage.aspx 80 - 192.168.128.19 ... 401 1 0
2014-01-15 14:51:26 W3SVC1 192.168.21.16 GET /MyApp/myPage.aspx 80 MyDomain\UserName 192.168.128.19 ... 200 0 0
Итак, запрос без имени пользователя (и ошибка 401 в результате) сопровождается запросом с именем пользователя. Такие записи без имени пользователя появляются иногда, не всегда. В остальных случаях есть запись только с именем пользователя.
Пожалуйста, кто-нибудь может сказать мне, почему я получаю ошибку 401?
PS Анонимная аутентификация отключена!
1 ответ
Вы обнаружили, как работает http auth.
Когда пользователь впервые подключается к серверу, браузер не отправляет учетные данные. Причина в том, что браузер не знает, нужно ли это. Он также не знает, в каком формате отправлять пароль, и что более важно, ВЫ НЕ ХОТИТЕ ОТПРАВИТЬ ПАРОЛЬ ИМЕНИ ИМЕНИ ПОЛЬЗОВАТЕЛЯ КАЖДОМУ СЕРВЕРУ, КОТОРЫЙ ВЫ КОГДА-ЛИБО ПОСЕТИЛИ.
Таким образом, IIS получает этот запрос без проверки подлинности и отправляет обратно 401. 401 не только означает, что вы не прошли проверку подлинности для доступа к этой веб-странице, но также включает в себя КАК вы должны проходить проверку подлинности (ОСНОВНОЕ имя пользователя / пароль, Kerberos и т. Д., Чтобы назвать несколько методов).
TLDR. 401 должен сообщить браузеру, как отправить имя пользователя / пароль (и что вам необходимо пройти аутентификацию для просмотра ресурса).