No puede solicitar la autenticación HTTP (ya sea Autenticación básica o Autenticación integrada de Windows) sin hacer que aparezca el cuadro de diálogo de autenticación en el caso donde todavía no hay credenciales.
Por lo tanto, en general, para los enfoques híbridos HTTP-auth + cookie-auth, habilita el acceso anónimo y autenticado para la mayor parte del sitio, pero solo permite el acceso autenticado a un script en particular.
Cuando el usuario accede a una página sin ningún tipo de autenticación, escupió una página con un formulario de inicio de sesión para la autenticación basada en cookies, y también un enlace a la URL única que permite el acceso autenticado. El usuario puede completar el formulario de cookies & auth de formularios, o presionar el enlace para iniciar sesión con HTTP auth en su lugar.
Si el usuario sigue ese enlace, recibirá una respuesta 401
y deberá proporcionar autenticación HTTP, ya sea a través del cuadro de diálogo de autenticación o utilizando potencialmente la autenticación integrada de Windows. Una vez que esto haya sucedido una vez, el navegador comenzará a enviar las mismas credenciales a cada página futura, por lo que IIS decodificará las credenciales para proporcionarle el REMOTE_USER
esperado cuando se ejecuten las secuencias de comandos del sitio principal.
Los navegadores solo enviarán las credenciales a las páginas en el mismo directorio que el script 401
, o los subdirectorios de este. Por este motivo, es mejor colocar el script HTTP-auth-required en la raíz, por ejemplo como /login.aspx
.
Sin embargo, hay algunos navegadores que no enviarán automáticamente las credenciales para más páginas, y requieren que todas las solicitudes HTTP respondan 401
primero, antes de volver a enviar la solicitud con las credenciales. Esto hace que los esquemas opcionales de autenticación y de autenticación híbrida sean imposibles (¡y que la navegación de los sitios protegidos sea mucho más lenta!). El único navegador moderno que hace esto es Safari. Puede que no le importe, ya que el soporte de Safari para la Autenticación Integrada de Windows ha sido tradicionalmente inestable de todos modos, y aún puede usar los formularios + tipo de autenticación de cookies.
posible duplicado de [¿Cómo admitir la autenticación NTLM con un repliegue para formar en ASP.NET MVC?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- fall-back-to-form-in-asp-net-mvc) – Neil