Поделиться через


Непредвиденное состояние 401.1 возвращается при использовании заголовков предварительной проверки подлинности с Internet Explorer и IIS

В этой статье устранена проблема, из-за которой непредвиденное состояние 401.1 возвращается с заголовками предварительной проверки подлинности. Это происходит при использовании Internet Explorer для браузера веб-приложения, размещенного в службы IIS (IIS).

Исходная версия продукта: режим Internet Explorer в Microsoft Edge, Internet Explorer 11, службы IIS
Исходный номер базы знаний: 2749007

Симптомы

Рассмотрим следующий сценарий:

  • Вы используете Internet Explorer (или режим Internet Explorer в Microsoft Edge) для просмотра веб-приложения, размещенного в IIS.
  • Клиентский компьютер настроен для использования предварительной проверки подлинности в параметрах Интернета, а проверка подлинности в режиме ядра включена в службах IIS.
  • Веб-запрос, отправленный Internet Explorer (или режим Internet Explorer в Microsoft Edge), является первым запросом, который будет отправлен в приложение IIS.

В этом сценарии СЛУЖБЫ IIS могут возвращать ответ Протокола передачи гипертекста (HTTP) 401.1 в Internet Explorer (или режим Internet Explorer в Microsoft Edge) в ответ на запрос браузера. В веб-браузере может потребоваться ввести имя пользователя и пароль. Или сообщение об ошибке HTTP 401.1 может отображаться в окне браузера.

Причина

Такое поведение предусмотрено разработчиками. Ответ 401.1 возникает, если первый запрос веб-браузера, отправляемый приложению IIS, содержит один из следующих заголовков:

  • Заголовок windows Challenge/Response (NTLM)
  • Заголовок "Согласование WWW-authorization" (известный как предварительная проверка подлинности)

Примечание.

Существует множество причин, по которым пользователю может быть предложено указать учетные данные в Internet Explorer, которые находятся за пределами этой статьи. Дополнительные сведения см. в разделе "Дополнительные сведения" , чтобы узнать, является ли причина запроса причиной проблемы, описанной здесь.

Обходное решение

Чтобы обойти это поведение, отключите предварительную проверку подлинности в параметрах Интернета или отключите проверку подлинности в режиме ядра для веб-приложения IIS.

Предупреждение

При неправильном использовании редактора реестра могут возникнуть серьезные проблемы, которые могут потребовать переустановки операционной системы. Корпорация Майкрософт не может гарантировать, что вы можете решить проблемы, возникающие из-за неправильного использования редактора реестра. При изменении реестра полагайтесь на свой опыт и знания.

Чтобы изменить это поведение в Internet Explorer, используйте редактор реестра (Regedt32.exe), чтобы добавить значение в следующий раздел реестра:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/

Примечание.

Раздел реестра — это путь; он был упакован для удобства чтения.

Добавьте следующие значения реестра:

  • Имя значения: DisableNTLMPreAuth
  • Тип данных: REG_DWORD
  • Значение: 1

Чтобы изменить это поведение в IIS, отключите проверку подлинности в режиме ядра для веб-приложения IIS:

  1. Откройте диспетчер службы IIS (IIS), выполнив следующую команду из командной строки администрирования:

    %windir%\System32\inetsrv\inetmgr.exe
    
  2. В области "Подключения" разверните имя сервера, разверните узлы, а затем разверните сайт, приложение или веб-службу, для которой требуется отключить проверку подлинности в режиме ядра.

  3. Прокрутите страницу до раздела "Безопасность " в области "Главная ", а затем дважды щелкните " Проверка подлинности".

  4. В области проверки подлинности выберите проверку подлинности Windows.

  5. Выберите "Дополнительные параметры" на панели "Действия ".

  6. Когда появится диалоговое окно "Дополнительные параметры" , снимите флажок "Включить проверку подлинности в режиме ядра".

  7. Нажмите кнопку "ОК ", чтобы закрыть диалоговое окно "Дополнительные параметры ".

Внимание

Отключение проверки подлинности в режиме ядра может привести к сбою веб-приложений, требующих проверки подлинности Kerberos и делегирования.

Дополнительная информация

Чтобы определить, вызвана ли запрос проблемой, описанной в этой статье, используйте средство Fiddler. Используйте средство для просмотра трафика HTTP-запроса и ответа для запроса, что приводит к запросу в Internet Explorer (или в режиме Internet Explorer в Microsoft Edge). Кроме того, для подтверждения состояния HTTP и кодов состояния подзаготов вам потребуется журналы IIS с сервера IIS. В следующем примере для иллюстрации этого поведения используется Internet Explorer:

  1. Запустите средство Fiddler и включите запись трафика.

  2. Перейдите к веб-приложению IIS, чтобы оно привело к запросу учетных данных.

  3. В Fiddler найдите запрос, который привел к 401. Глядя на необработанные представления запросов и ответов, вы увидите записи, аналогичные следующим:

    Заголовки запроса:

    GET /App1/default.aspx HTTP/1.1
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: websitename
    Cookie: ASP.NET_SessionId=jdzbfpnmacq0jykhxnhqhe3j
    Authorization: Negotiate
    <header content omitted>
    

    Заголовки ответов

    HTTP/1.1 401 Unauthorized
    Content-Type: text/html
    Server: Microsoft-IIS/7.5
    WWW-Authenticate: Negotiate
    WWW-Authenticate: NTLM
    X-Powered-By: ASP.NET
    Date: Wed, 22 Aug 2012 17:41:09 GMT
    Content-Length: 1293
    Proxy-Support: Session-Based-Authentication
    

Примечание.

Первоначальный запрос к веб-приложению уже содержит Authorization заголовок, который затем приводит к ответу 401. Соответствующий журнал IIS должен отображать запись, аналогичную следующей:

2012-08-22 17:41:09 2001:4898:0:fff:200:5efe:157.59.113.72 GET /App1/default.aspx - 80 - 2001:4898:0:fff:0:
5efe:172.18.100.183 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/5.0;+SLCC2;+.NET+CLR+
2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+MS-
RTC+EA+2;+BRI/1;+Zune+4.7;+MS-RTC+LM+8;+BRI/2;+Creative+AutoUpdate+v1.41.02) 401 1 2148074254 5005

Состояние HTTP и вложенное состояние — 401.1, которое сопоставляется с "Отказано в доступе" из-за недопустимых учетных данных.

Дополнительные сведения см. в следующей документации: