asp.net - migrating from asp net mvc to asp net core mvc
Autenticación de Windows para ASP.NET MVC 4: cómo funciona, cómo probarlo (3)
Nunca antes había usado la Autenticación de Windows para aplicaciones web ASP.NET MVC , pero sí la Autenticación de formularios. Recientemente, he tenido una aplicación web ASP.NET MVC 4 que requiere una implementación de Autenticación de Windows para los usuarios que tienen autorización para iniciar sesión en el servidor web de mi empresa. Entonces, tengo algunas preguntas con respecto a la Autenticación de Windows. Estoy usando Visual Studio 2012.
¿Cómo funciona la Autenticación de Windows?
¿Cómo implemento la Autenticación de Windows correctamente en el archivo web.config?
¿Cómo pruebo si la Autenticación de Windows realmente funciona para mi sitio web ASP.NET MVC 4? En otras palabras, ¿cómo lo pruebo en mi PC de desarrollo local con IIS local (versión 8) y en el servidor web real de mi compañía con IIS versión 7?
Encontré un video útil que fue muy útil para mí al mostrar paso a paso la implementación y prueba de la autenticación de Windows para un sitio web ASP.NET MVC. Entonces, cierro esta pregunta.
Video de un póster muy amable:
He hecho esto con ASP.NET MVC 1.0. Eso fue hace un tiempo relativamente largo. Recuerdo que la configuración de IIS era confusa. Acabo de hacer algunas comprobaciones, y no parece que las cosas hayan cambiado mucho a ASP.NET MVC 4.0 en cuanto a atributos en los controladores.
Para sus preguntas:
¿Como funciona? Las siguientes referencias resumen bastante las cosas. Autenticar Usuarios con Autenticación de Windows (C #) NO es exactamente correcto para ASP.NET MVC 4.0, pero tiene algunos antecedentes.
Cómo crear un sitio de intranet utilizando ASP.NET MVC es para ASP.NET MVC 3.0.
Soy demasiado nuevo para publicar más de dos enlaces, por lo que tendrá que buscar en MSDN "AuthorizeAttribute Class" para .NET Framework 4.
¿Qué configuraciones para web.config? - Solo recuerdo cambiar un elemento, "modo de autenticación".
En cuanto a las pruebas, mis versiones del sistema operativo Windows combinaban mejor, y mi máquina de desarrollo estaba en el mismo dominio de Windows. Pero si mal no recuerdo, esto funcionó. YMMV , pero una cosa que sí recuerdo considerar fue implementar mi propia autorización. Tal vez esa sea una avenida para su caso, para hacerla suya, y luego cambiar a autenticación de Windows en producción. Pero sugeriría un par de iteraciones de prueba con un servidor de prueba si puede configurar uno en el dominio de la compañía.
Para IIS 8.5 y MVC 4:
¿Cómo funciona la Autenticación de Windows?
En este modo, User.Identity
(como en HttpContext.Current.User.Identity
) es poblado por el servidor web subyacente. Esto podría ser IIS Express en el enlace de @R Kumar demostrado, o completo IIS como en el video de @Thomas Benz.
Específicamente, User.Identity es un objeto WindowsIdentity. Por ejemplo, el siguiente elenco funcionará:
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
¿Cómo implemento la Autenticación de Windows correctamente en el archivo web.config?
<system.web>
<authentication mode="Windows" />
...
¿Cómo pruebo si la Autenticación de Windows realmente funciona para mi sitio web ASP.NET MVC 4? En otras palabras, ¿cómo lo pruebo en mi PC de desarrollo local con IIS local (versión 8) y en el servidor web real de mi compañía con IIS versión 7?
Primero, cambie la autorización de ASP.NET para excluir al usuario actual. P.ej
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="yourdomain/someotheruser" />
<deny users="*" />
</authorization>
Segundo, habilite la Autenticación de Windows para su sitio usando el Administrador IIS. Está bajo la característica ''Autenticación''. Y deshabilita la autenticación anónima.
Tenga en cuenta que una explicación anterior le sugerirá que realice cambios en el elemento web.config de su sitio. Sin embargo, las implementaciones recientes de IIS evitan esto por razones de seguridad.
Tres, apunta tu navegador a la página web. El navegador debe pedirle que proporcione las credenciales, porque el usuario actual no tiene permitido el acceso al sitio web. Proporcione los que están autorizados para el sitio y se debe ejecutar su código MVC.
Cuatro, verifica la identidad del usuario. P.ej
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;