Получение 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 должен сообщить браузеру, как отправить имя пользователя / пароль (и что вам необходимо пройти аутентификацию для просмотра ресурса).

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