Tengo un sitio web php que se ejecuta en IIS 7.5. El sitio está protegido por la autenticación de Windows y eso funciona bien:
Cuando los usuarios acceden al sitio, se les pide nombre de usuario / contraseña y se comunican si se autentican. Si los usuarios hacen clic en Cancelar o escriben mal la contraseña 3 veces, se les muestra la página de error 401:
Ahora me gustaría mostrar una página personalizada que explica cómo iniciar sesión. Así que voy a las páginas de error, selecciono el código de estado 401.2 y lo señalo a la página que me gustaría mostrar:
Luego, asegúrese de que los errores personalizados estén activados para todos. Y kaa-boom! La autenticación ya no funciona, los usuarios no reciben la solicitud de contraseña. Como dice la documentación, la autenticación de Windows funciona enviando primero la respuesta 401, luego el navegador le pregunta al usuario las credenciales del proveedor y luego determina qué hacer a continuación.
Lo que sucede aquí: en la primera solicitud de la página, IIS intenta enviar el encabezado 401, pero se da cuenta de que web.config dice "en el redireccionamiento 401 a esta página". Y en lugar de autenticación, solo da la página de redireccionamiento.
He intentado reemplazar 401, 401.1, 401.2, no hizo ninguna diferencia.
¿Qué estoy haciendo mal y cómo dar una página personalizada en el error de autenticación de usuario?
ps Aquí está el web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="/not_restricted/401.htm" responseMode="ExecuteURL" />
<error statusCode="404" prefixLanguageFilePath="" path="/not_restricted/404.htm" responseMode="ExecuteURL" />
</httpErrors>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<identity impersonate="false" />
<customErrors defaultRedirect="http://www.myserver.com/not_restricted/500.htm" mode="Off">
</customErrors>
</system.web>
</configuration>