Compartir a través de


Autenticar a los usuarios con la autenticación de Windows (C#)

por Microsoft

Aprenda a usar autenticación de Windows en el contexto de una aplicación MVC. Aprenderá a habilitar la autenticación de Windows en el archivo de configuración web de la aplicación y a configurar la autenticación con IIS. Por último, aprenderá a usar el atributo [Authorize] para restringir el acceso a las acciones del controlador a usuarios o grupos de Windows concretos.

El objetivo de este tutorial es explicar cómo aprovechar las características de seguridad integradas en Internet Information Services para proteger mediante contraseña las vistas de las aplicaciones de MVC. Aprenderá a permitir que las acciones del controlador solo las invoquen usuarios de Windows concretos o usuarios que pertenezcan a grupos de Windows concretos.

El uso de la autenticación de Windows es algo totalmente razonable cuando se crea un sitio web de empresa interno (un sitio de una intranet) y se desea que los usuarios puedan acceder a él con sus nombres de usuario y contraseñas estándar de Windows. Si va a crear un sitio web al que se puede acceder desde el exterior (un sitio web de Internet) considere la posibilidad de usar la autenticación mediante formularios.

Habilitación de la autenticación de Windows

Cuando se crean aplicaciones ASP.NET MVC, la autenticación de Windows no está habilitada de forma predeterminada. La autenticación mediante formularios es el tipo de autenticación predeterminado habilitado para las aplicaciones de MVC. Para habilitarla autenticación de Windows, debe modificar el archivo de configuración web (web.config) de la aplicación de MVC. Busque la sección de <autenticación> y modifíquela para usar Windows, en lugar de la autenticación mediante formularios como se indica a continuación:

<authentication mode="Windows">

</authentication>

Al habilitar la autenticación de Windows, el servidor web es el responsable de autenticar a los usuarios. Normalmente, hay dos tipos diferentes de servidores web que se usan al crear e implementar una aplicación ASP.NET MVC.

En primer lugar, al desarrollar una aplicación de MVC, se usa el servidor web de desarrollo de ASP.NET que se incluye con Visual Studio. De forma predeterminada, el servidor web de desarrollo de ASP.NET ejecuta todas las páginas del contexto de la cuenta de Windows actual (sea cual sea la cuenta que usó para iniciar sesión en Windows).

El servidor web de desarrollo de ASP.NET también admite la autenticación mediante NTLM. Para habilitar la autenticación mediante NTLM, haga clic con el botón secundario en el nombre del proyecto en la ventana Explorador de soluciones y seleccione Propiedades. Luego, seleccione la pestaña Web y active la casilla NTLM (vea la figura 1).

Figura 1: Habilitación de la autenticación mediante NTLM para el servidor web de desarrollo de ASP.NET

clip_image002

Por otra parte, en las aplicaciones web de producción, se usa IIS como servidor web. IIS admite varios tipos de autenticación, entre los que se incluyen:

  • Autenticación básica: se define como parte del protocolo HTTP 1.0. Envía nombres de usuario y contraseñas en texto no cifrado (codificado en base 64) a través de Internet. - Autenticación implícita: envía a través de Internet un hash de una contraseña, en lugar de la propia contraseña. - Autenticación integrada de Windows (NTLM) - El mejor tipo de autenticación para usar en entornos de intranet que usan Windows. - Autenticación de certificados - Habilita la autenticación usando un certificado del lado del cliente. El certificado se asigna a una cuenta de usuario de Windows.

Nota:

Para una Introducción más detallada de estos diferentes tipos de Autenticación, consulte https://msdn.microsoft.com/library/aa292114(VS.71).aspx.

Puede usar el administrador de Internet Information Services para habilitar un tipo concreto de autenticación. Tenga en cuenta que no todos los tipos de autenticación están disponibles en todos los sistemas operativos. Además, si está usando IIS 7.0 con Windows Vista, tendrá que habilitar los distintos tipos de autenticación de Windows antes de que aparezcan en el administrador de Internet Information Services. Abra Panel de control, Programas, Programas y características, Active o desactive las características de Windows y expanda el nodo Internet Information Services (vea la figura 2).

Figura 2: Habilitación de las características de Windows IIS

clip_image004

Con Internet Information Services, puede habilitar o deshabilitar distintos tipos de autenticación. Por ejemplo, la figura 3 muestra la deshabilitación de la autenticación anónima y la habilitación de la autenticación integrada de Windows (NTLM) al usar IIS 7.0.

Figura 3: Habilitación de la autenticación integrada de Windows

clip_image006

Autorización de usuarios y grupos de Windows

Después de habilitar la autenticación de Windows, puede usar el atributo [Authorize] para controlar el acceso al controlador o a las acciones del controlador. Este atributo se puede aplicar a todo un controlador de MVC o a una acción de controlador determinada.

Por ejemplo, el controlador Home de la lista 1 expone tres acciones denominadas Index(), CompanySecrets() y StephenSecrets(). Cualquiera puede invocar la acción Index(). Sin embargo, la acción CompanySecrets() solo puede activarla los miembros del grupo Administradores local de Windows. Por último, el usuario de dominio de Windows llamado Stephen (en el dominio Redmond) es el único que puede invocar la acción StephenSecrets().

Lista 1: Controllers\HomeController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [Authorize(Roles = "Managers")]
        public ActionResult CompanySecrets()
        {
            return View();
        }

        [Authorize(Users="redmond\\swalther")]
        public ActionResult StephenSecrets()
        {
            return View();
        }



    }
}

Nota:

Dado el Control de cuentas de usuario de Windows (UAC), al trabajar con Windows Vista o Windows Server 2008, el grupo Administradores local se comportará de forma diferente a otros grupos. El atributo [Authorize] no reconocerá correctamente un miembro del grupo Administradores local, a menos que modifique la configuración de UAC del equipo.

Lo que ocurre exactamente cuando se intenta invocar una acción del controlador sin tener los permisos adecuados depende del tipo de autenticación habilitada. De forma predeterminada, al usar el Servidor de desarrollo de ASP.NET, simplemente se obtiene una página en blanco. La página se sirve con un estado de respuesta HTTP 401 No autorizado.

Por otro lado, si usa IIS con la autenticación anónima deshabilitada y la autenticación básica habilitada, sigue recibiendo un mensaje de diálogo de inicio de sesión cada vez que solicite la página protegida (vea la figura 4).

Figura 4: Cuadro de diálogo de inicio de sesión de autenticación básica

clip_image008

Resumen

En este tutorial se explica cómo puede usar la autenticación de Windows en el contexto de una aplicación ASP.NET MVC. Ha aprendido a habilitar la autenticación de Windows en el archivo de configuración web de la aplicación y a configurar la autenticación con IIS. Por último, ha aprendido a usar el atributo [Authorize] para restringir el acceso a las acciones del controlador a determinados usuarios o grupos de Windows.