Se devuelve un estado 401.1 inesperado al usar encabezados de autenticación previa con Internet Explorer e IIS
En este artículo se resuelve el problema por el que se devuelve un estado inesperado 401.1 con encabezados de autenticación previa. Se produce cuando se usa Internet Explorer para explorador a una aplicación web hospedada en Internet Information Services (IIS).
Versión original del producto: Modo IE para Edge, Internet Information Services, Internet Explorer 11, 10, 9
Número de KB original: 2749007
Síntomas
Imagine la siguiente situación:
- Use Windows Internet Explorer para ir a una aplicación web hospedada en IIS 7.0 o posterior.
- El explorador Internet Explorer está configurado para usar la autenticación previa y la autenticación en modo kernel está habilitada en IIS.
- Además, esta solicitud web enviada por Internet Explorer es la primera solicitud que se va a enviar a la aplicación IIS.
En este escenario, IIS puede devolver una respuesta del Protocolo de transferencia de hipertexto (HTTP) 401.1 a Internet Explorer en respuesta a la solicitud del explorador. El explorador web puede solicitarle que escriba su nombre de usuario y contraseña. O bien, el mensaje de error HTTP 401.1 se puede mostrar en la ventana del explorador.
Causa
Este comportamiento es una característica del diseño de la aplicación. La respuesta 401.1 se producirá si la primera solicitud del explorador web que se envía a la aplicación IIS contiene uno de los encabezados siguientes:
- un encabezado Windows desafío/respuesta (NTLM)
- un encabezado Negotiate WWW-Authorization (conocido como autenticación previa)
Nota
Hay muchas razones por las que se puede solicitar credenciales a un usuario en Internet Explorer que están fuera del ámbito de este artículo. Consulte la sección Más información a continuación para obtener información sobre cómo determinar si la causa del aviso es del problema descrito aquí.
Solución alternativa
Para solucionar este comportamiento, deshabilite la autenticación previa en Internet Explorer o desactive la autenticación en modo kernel para la aplicación web iis.
Advertencia
Si usa incorrectamente el Editor del Registro, puede causar problemas graves que pueden requerir la reinstalación del sistema operativo. Microsoft no puede garantizar que pueda resolver los problemas resultantes del uso incorrecto del Editor del Registro. Use el Editor del Registro a su propio riesgo.
Para modificar este comportamiento en Internet Explorer, use el Editor del Registro (Regedt32.exe) para agregar un valor a la siguiente clave del Registro:
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/
Nota
La clave del Registro anterior es una ruta de acceso; se ha encapsulado para mejorar la legibilidad.
Añada el siguiente valor de registro:
- Nombre del valor:
DisableNTLMPreAuth - Tipo de datos: REG_DWORD
- Valor: 1
Para modificar este comportamiento en IIS, deshabilite la autenticación en modo kernel para la aplicación web iis.
Abra el Administrador de Internet Information Services (IIS) ejecutando el siguiente comando desde un símbolo del sistema administrativo:
%windir%\System32\inetsrv\inetmgr.exeEn el panel Conexiones , expanda el nombre del servidor, expanda Sitios y, a continuación, el sitio, la aplicación o el servicio web para el que desea deshabilitar la autenticación en modo kernel.
Desplácese hasta la sección Seguridad del panel Inicio y, a continuación, haga doble clic en Autenticación.
En el panel Autenticación, seleccione Windows Autenticación.
Seleccione Advanced Configuración (Avanzadas Configuración) en el panel Actions (Acciones).
Cuando aparezca el cuadro de diálogo Advanced Configuración (Avanzadas Configuración), desactive la casilla Enable Kernel-mode authentication (Habilitar autenticación en modo kernel).
Seleccione Aceptar para cerrar el cuadro de diálogo Avanzadas Configuración.
Importante
Deshabilitar la autenticación en modo kernel puede provocar errores en las aplicaciones web que requieren autenticación Kerberos y delegación.
Más información
Para determinar si el aviso se debe al problema descrito en este artículo, use la herramienta Fiddler. Use la herramienta para ver el tráfico de solicitud/respuesta HTTP de la solicitud que da como resultado el aviso en Internet Explorer. También necesitará los registros de IIS del servidor IIS para confirmar el estado HTTP y los códigos de subestado. En el ejemplo siguiente se usa Internet Explorer 9 para ilustrar este comportamiento:
Inicie la herramienta Fiddler y habilite la captura de tráfico.
Vaya a la aplicación web de IIS para que se le soliciten las credenciales.
En Fiddler, busque la solicitud que produjo el 401. Si examina las vistas de solicitud y respuesta sin procesar, verá entradas similares a las siguientes:
Encabezados de solicitud:
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>Encabezados de respuesta
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
Nota
La solicitud inicial a la aplicación web ya contiene el Authorization encabezado , lo que da como resultado la respuesta 401. El registro de IIS correspondiente debe mostrar una entrada similar a la siguiente:
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
El estado HTTP y el subestado son 401.1, que se asigna a Acceso denegado debido a credenciales no válidas.
Para obtener más información, consulte la siguiente documentación: