5

He desarrollado una aplicación web en ASP.NET MVC que estamos utilizando internamente. Ahora queremos que esté disponible a través de nuestro servidor en Internet, para hacer la vida más fácil cuando realizamos trabajos en el sitio.ASP.NET MVC Autenticación de Windows además de la autenticación de formularios

Lo ideal sería que sólo se adhieren autenticación de Windows delante de ella, por lo que cualquier persona con una cuenta de dominio puede iniciar sesión.

El problema es que ya estoy usando la autenticación de formularios en la aplicación.

No tenemos restricciones de contraseña para la aplicación, simplemente seleccione el usuario que desea iniciar sesión y luego envíe el formulario. En el lado del servidor sólo hace esto -

FormsAuthentication.SetAuthCookie(viewModel.Username, true); 

Esto hace que el nombre del usuario está disponible a través de todos los controladores y vistas utilizando el objeto Usuario (user.identity.name).

Sin embargo ... cuando habilito la autenticación de Windows en IIS, la aplicación web comienza a pensar que user.identity.name es "ourdomain \ domainuser".

Lo que me gustaría es utilizar la autenticación de formularios junto con la autenticación de Windows, pero no hacer que se integren de ninguna manera.

¿Hay una manera simple de lograr esto?

+0

Bueno, el nombre _es_ 'ourdomain \ domainuser'. ¿Qué esperabas/quieres? –

Respuesta

6

El equipo de ASP.NET no admite oficialmente el uso de la autenticación de modo mixto en una aplicación. Si busca en la web, encontrará publicaciones de blog sobre cómo hacerlo, pero tenga en cuenta que el equipo de ASP.NET no lo recomienda. La razón por la que esto se desaconseja es que es muy difícil razonar desde el punto de vista de la corrección, y existen ataques triviales contra dicha configuración que pueden permitir que los clientes malintencionados se disfracen de usuarios autenticados.

+1

Finalmente decidí que no valía la pena el esfuerzo. – NoPyGod

1

No puede usar la autenticación de formularios y la autenticación de Windows al mismo tiempo en IIS 7 y versiones posteriores en Modo integrado. Por lo tanto, desalentaría mucho ese enfoque. Sin embargo, puede usar el ActiveDirectoryMembershipProvider Class incorporado para autenticar cuentas de usuario de Windows a través de un formulario y vincular su inicio de sesión a eso.

+0

En realidad, puede usar Autenticación de Windows y Autenticación de formularios en IIS7 +. Puede usar el modo clásico o con modo integrado. Solo tienes que hacer un pequeño ajuste en el fondo para integrarlo. Ver http://mvolo.com/blogs/serverside/archive/2008/02/11/IIS-7.0-Two_2D00_Level-Authentication-with-Forms-Authentication-and-Windows-Authentication.aspx –

+0

@MystereMan En realidad, su enlace de ajuste todavía no usa ambos al mismo tiempo aunque le da esa apariencia a un usuario. Sin embargo, es correcto que todavía puede realizar una autenticación de dos etapas con el modo clásico. Sin embargo, no veo ninguno como una solución particularmente buena. Para la solución mvolo.com está introduciendo mucha complejidad adicional que puede evitarse. Para el modo clásico estás siguiendo un modelo que probablemente desaparecerá eventualmente. Mi opinión es que, en primer lugar, es mejor diseñar las cosas correctamente. – JamieSee

+0

@MystereMan Ese artículo no analiza la autenticación mixta en el contexto de MVC. –

Cuestiones relacionadas