2010-01-15 10 views
9

Tengo un sitio web que me gustaría permitir tanto para formularios como para autenticación de Windows. Mi problema es que parece que cuando configura IIS para permitir tanto la autenticación anónima (Obligatoria para la autenticación de formularios) como la de Windows, el navegador no enviará las credenciales de la red del usuario.Autenticación de Windows de IIS antes de Anonymous

Simplemente utiliza el inicio de sesión anónimo. ¿Hay alguna forma, ya sea en IE8 o IIS para que intente Windows Auth 1st y luego retroceda a Anonymous?

Gracias por cualquier ayuda.

+0

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

Respuesta

11

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.

+0

Hm, lo siento por el downvote, no sé por qué, pero no se puede deshacer al parecer .. – Onkelborg

Cuestiones relacionadas