Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Cómo crear un sitio de intranet mediante ASP.NET MVC

En este tema se describe cómo crear una aplicación de intranet mediante ASP.NET MVC y cómo protegerla utilizando la autenticación de Windows y la autorización.

La autenticación es el proceso de identificar quién son los usuarios cuando visitan un sitio web. La autenticación se utiliza normalmente en combinación con la autorización. La autorización es el proceso de determinar si un usuario tiene permisos para acceder a un recurso determinado o realizar alguna acción. Por ejemplo, cuando un usuario final accede a una dirección URL mediante un explorador, ASP.NET puede autenticar al usuario y, a continuación, examinar las reglas de autorización del recurso solicitado para determinar si el usuario tiene permiso para obtener acceso a él.

En las aplicaciones de intranet pertenecientes a su dominio corporativo, normalmente utilizará la autenticación de Windows. La autenticación de Windows permite a las aplicaciones web de un dominio de Windows aprovechar la infraestructura del dominio para autenticar a los usuarios. Sin embargo, no utilice la autenticación de Windows si los usuarios que deben ser autenticados tienen acceso a su sitio web a través de firewalls y servidores proxy.

En este tutorial, implementará la autorización mediante la autorización de usuarios explícita y la clase AspNetWindowsTokenRoleProvider integrada, que utiliza los grupos de Windows como roles.

Para poder completar este tutorial, necesitará:

  • Microsoft Visual Web Developer 2010 o Microsoft Visual Studio 2010. Para instalar Microsoft Visual Web Developer 2010 SP1, puede utilizar el Instalador de plataforma web.

  • ASP.NET MVC 3 Tools Update. Puede instalar esta versión desde la siguiente página: ASP.NET MVC 3 Tools Update

  • IIS 7 habilitado en el equipo, o IIS Express. Para IIS 7, debe tener instalada la característica Autenticación de Windows. Para instalar IIS y configurar la autenticación de Windows para IIS 7, vea IIS 7 with Windows Authentication. Para instalar IIS Express, puede utilizar el Instalador de plataforma web.

Visual Studio incluye una plantilla que puede utilizar para crear una solución de Intranet de ASP.NET MVC.

Para crear un nuevo proyecto de aplicación de Intranet de ASP.NET MVC 3

  1. Abra Visual Studio o Visual Web Developer.

  2. En el menú Archivo, haga clic en Nuevo proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

    Nuevo proyecto de MVC
  3. En Plantillas instaladas, expanda Visual Basic o Visual C# y haga clic en Web.

  4. Seleccione Aplicación web de ASP.NET MVC 3.

  5. En el cuadro Nombre, escriba Mvc3Intranet.

  6. En el cuadro Ubicación, escriba un nombre para la carpeta de proyecto.

    NotaNota:

    IIS no puede ejecutar un proyecto de ASP.NET que se haya creado en la carpeta de proyecto predeterminada de Visual Studio (C:\users\<user>\Documents\Visual Studio 2010\Projects). Seleccione una carpeta en la que IIS pueda obtener acceso a los archivos, como C:\Webs.

  7. Haga clic en Aceptar.

    Se muestra el cuadro de diálogo Nuevo proyecto de ASP.NET MVC 3.

  8. Seleccione la plantilla Aplicación de Intranet.

    Nuevo proyecto de IntraNet
  9. Haga clic en Aceptar.

    Se genera el nuevo proyecto de ASP.NET MVC.

  10. Ejecute la aplicación.

    En la esquina superior derecha del explorador, puede ver el nombre de usuario de su dominio o grupo de trabajo.

    Bienvenida
  11. Abra el archivo de diseño (Views\Shared\_Layout.cshtml o Views\Shared\_Layout.vbhtml) y busque el siguiente HTML:

    <div id="title">
         <h1>My MVC Application</h1>
     </div>
     <div id="logindisplay">
         Welcome <strong>@Context.User.Identity.Name</strong>!
     </div>
    

    Reemplácelo con el siguiente marcado:

    <div id="title">
        <h4> Environment.UserName: @Environment.UserName  
        @DateTime.Now.Millisecond.ToString() </h4>
    </div>
    <div id="logindisplay">
        Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!
    </div>
    

    La propiedad Context.User.Identity.Name devuelve la identidad del usuario autenticado. Si la aplicación se ejecuta en IIS 7, y la suplantación está deshabilitada, la propiedad Environment.UserName devuelve la identidad del grupo de aplicaciones en el que se ejecuta la aplicación web. Por ejemplo, si el sitio web se ejecuta en el grupo de aplicaciones predeterminado, se muestra el nombre DefaultAppPool. Si se utiliza el grupo de aplicaciones ASP.NET v4.0, se muestra ASP.NET v4.0.

De forma predeterminada, Visual Studio ejecuta el proyecto de aplicación web mediante el Servidor de desarrollo de Visual Studio. Sin embargo, el Servidor de desarrollo de Visual Studio no admite errores de autenticación que hacen que el sistema operativo pida al usuario sus credenciales, de modo que es recomendable que pruebe el proyecto mediante IIS o IIS Express. En esta sección se describe cómo configurar el proyecto web para utilizar IIS 7, el Servidor de desarrollo de Visual Studio e IIS Express. Elija el procedimiento para el servidor que desea utilizar.

NotaNota:

No tiene porqué utilizar IIS 7 para el desarrollo. Sin embargo, se recomienda encarecidamente que pruebe con regularidad la aplicación web en IIS 7 si pretende implementar el proyecto en un servidor de IIS 7.

Para configurar el proyecto web para utilizar IIS Express

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Usar IIS Express.

    Usar IIS Express

    Se muestra un cuadro de diálogo que pregunta ¿Desea configurar este proyecto web para usar IIS Express como su servidor web? Se creará un nuevo sitio en el servidor de IIS Express para hospedar el proyecto.

  2. Haga clic en .

  3. En el Explorador de soluciones, seleccione el nombre del proyecto y, a continuación, presione Alt+Entrar para mostrar la ventana Propiedades.

  4. En la ventana Propiedades, establezca Autenticación anónima en Deshabilitado y establezca Autenticación de Windows en Habilitado.

    Ventana Propiedades de MVC 3 IISX
  5. Ejecute la aplicación.

    Al igual que el Servidor de desarrollo de Visual Studio (y al contrario que IIS), IIS Express se ejecuta bajo la identidad del usuario que ha iniciado la sesión. La propiedad Environment.UserName se muestra como la identidad del usuario que ha iniciado la sesión, o sea usted.

Para configurar el servidor de desarrollo de Visual Studio para la autenticación de Windows

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Propiedades.

  2. Seleccione la pestaña Web y, a continuación, active la casilla Autenticación NTLM.

    NTLM de Cassini

Para configurar el proyecto web para utilizar IIS

  1. Compruebe que ASP.NET con la autenticación de Windows está habilitado en su equipo. La siguiente ilustración muestra el cuadro de diálogo Características de Windows con las opciones seleccionadas que son necesarias para este tutorial.

    Habilitar IIS 7.5
  2. Abra el Administrador de IIS. (En Windows, escriba "iis" en el cuadro Buscar programas y archivos y, a continuación, seleccione Administrador de Internet Information Services (IIS)).

  3. En el panel Conexiones, haga clic con el botón secundario en el nodo Sitio web predeterminado y, a continuación, haga clic en Agregar aplicación.

    Agregar aplicación de IIS

    Aparecerá el cuadro de diálogo Agregar aplicación.

  4. Escriba un alias para la aplicación y la ruta de acceso a la aplicación de intranet de ASP.NET MVC que creó anteriormente en este tutorial.

    Diálogo Agregar aplicación

    El grupo de aplicaciones debe ser un grupo de aplicaciones de .NET Framework 4. Si el grupo de aplicaciones predeterminado no es .NET Framework Version: v4.0, seleccione el grupo de aplicaciones de ASP.NET v4.0. Si su equipo no tiene un grupo de aplicaciones de la versión 4.0, utilice la herramienta Registro de IIS de ASP.NET (Aspnet_regiis.exe) para registrar .NET Framework 4. Para obtener más información, vea ASP.NET IIS Registration Tool (Aspnet_regiis.exe). En la siguiente ilustración, el grupo de aplicaciones predeterminado es V2 y requiere que configure la aplicación web para utilizar el grupo de aplicaciones ASP.NET v4.0.

    Grupo de aplicaciones de C V4
  5. En Administrador de IIS, seleccione la nueva aplicación en el panel Conexiones, y a continuación en el panel Acciones, haga clic en el vínculo Examinar *: 80.

    Examen del Administrador de IIS

    Como alternativa, en una ventana del explorador, escriba la dirección URL de la aplicación, por ejemplo http://localhost/MvcWA. La propiedad Environment.UserName muestra el grupo de aplicaciones (DefaultAppPool o v4.0 de ASP.NET).

    DefAppPool Contoso Rick
  6. En la dirección URL del explorador, reemplace localhost con el nombre de su equipo para comprobar que tiene la dirección URL completa correcta. Utilizará esta dirección URL en el paso siguiente.

  7. Pruebe la dirección URL que contiene el nombre de equipo en otro equipo de su dominio o grupo de trabajo.

    Si no puede obtener acceso a la aplicación web desde un equipo remoto, puede que tenga que configurar el firewall en el equipo que proporciona las páginas web.

Para habilitar el acceso al servidor web a través del firewall de Windows

  1. En el cuadro Buscar programas y archivos de Windows, escriba "firewall".

  2. Seleccione Permitir un programa a través de Firewall de Windows.

    iniciar firewall
  3. Haga clic en Cambiar la configuración y desplácese a la parte inferior.

    Permitir WWW a través del firewall
  4. Seleccione Servicios de World Wide Web (HTTP).

  5. Haga clic en Aceptar.

  6. Compruebe que la dirección URL de la aplicación de intranet de ASP.NET MVC 3 funciona ahora desde un equipo remoto.

En el siguiente procedimiento, configurará la aplicación de intranet de ASP.NET MVC 3 para utilizar la autenticación de Windows en IIS 7.

Para configurar la autenticación de Windows en IIS 7 para una aplicación web

  1. En Administrador de IIS, seleccione la aplicación MvcWA.

    En Vista Características, haga doble clic en Autenticación.

    Autenticación del Administrador de IIS
  2. Haga clic con el botón secundario en Autenticación anónima y, a continuación, haga clic en Deshabilitar.

    Deshabilitar autenticación anónima de IISmgr
  3. Haga clic con el botón secundario en Autenticación de Windows y, a continuación, haga clic en Habilitar.

    NotaNota:

    Si no se muestra la autenticación de Windows, debe instalar el servicio de rol de la autenticación de Windows. Para obtener más información, vea Install Windows Authentication.

En esta sección, agregará métodos de acción a un controlador y restringirá el controlador para que solo usuarios y grupos específicos puedan obtener acceso a él. Normalmente el acceso se restringe utilizando grupos y no cuentas de usuario específicas, porque a menudo los usuarios cambian con más frecuencia que los grupos.

Para agregar cuentas de usuario y grupos

  1. Ejecute la aplicación de ASP.NET MVC que creó anteriormente en este tutorial.

    El explorador muestra el nombre de su dominio o grupo de trabajo. En la siguiente ilustración, el nombre de usuario es "CONTOSO\Rick". Utilizará su propio nombre de usuario para restringir el acceso después en el tutorial.

    DefAppPool Contoso Rick
  2. Abra una ventana de comandos y escriba el siguiente comando:

    cmd /k net user <user> /Domain

    Para <user>, sustituya su nombre de usuario. El comando enumerará los grupos a los que pertenece. Anote algunos de los nombres de grupo para usarlos después en el tutorial.

    El comando gpresult /V enumerará todos los grupos de su dominio o grupo de trabajo, no solamente los grupos a los que pertenece. Puede ejecutar este comando si desea encontrar grupos a los que no pertenece.

  3. Agregue dos métodos de acción al controlador Home. Por ejemplo, agregue un método de acción denominado VB_CS_Managers y otro denominado VP.

  4. Aplique el atributo AuthorizeAttribute a los métodos de acción del controlador Home y especifique una lista (una lista delimitada por comas) de usuarios y roles que pueden obtener acceso al controlador.

    En el siguiente ejemplo se muestra cómo utilizar el atributo AuthorizeAttribute para restringir el acceso a los métodos de acción por usuarios y roles.

    using System.Web.Mvc;
    
    namespace Mvc3Intranet.Controllers {
        public class HomeController : Controller {
            public ActionResult Index() {
                ViewBag.Message = "Welcome to ASP.NET MVC!";
    
                return View();
            }
    
            [Authorize(Users = @"CONTOSO\Rick, CONTOSO\Keith, CONTOSO\Mike")]
            public ActionResult About()
            {
                return View();
            }
    
            [Authorize(Roles = @"CONTOSO\VBmanagers,CONTOSO\CSmanagers")]
            public ActionResult VB_CS_Managers()
            {
                return View();
            }
    
            [Authorize(Roles = @"VPs")]
            public ActionResult VP()
            {
                return View();
            }
    
        }
    }
    
  5. Cree vistas para los métodos de acción que agregó.

  6. Agregue dos vínculos de acción al elemento de menú en el archivo de diseño para facilitar la navegación.

    En el siguiente ejemplo se muestra el marcado completado.

    <div id="menucontainer">
        <ul id="menu">
            <li>@Html.ActionLink("Home", "Index", "Home")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>
            <li>@Html.ActionLink("VB & CS", "VB_CS_Managers", "Home")</li>
            <li>@Html.ActionLink("VP Only", "VP", "Home")</li>
        </ul>
    </div>
    
  7. En el explorador, navegue hasta una acción para la que tenga autorización.

  8. En el explorador, navegue hasta una acción para la que no tenga autorización.

    La siguiente ilustración muestra el cuadro de diálogo Seguridad de Windows que aparece y solicita las credenciales de una cuenta que tiene acceso a la dirección URL.

    NotaNota:

    Si utiliza el servidor de desarrollo de Visual Studio, no le solicitarán las credenciales y solo verá una página en blanco.

    Seguridad de Windows

Una característica de seguridad importante es la capacidad de controlar la identidad bajo la que se ejecuta el código de la aplicación web. De forma predeterminada, ASP.NET ejecuta todo el código mediante la cuenta del grupo de aplicaciones. Sin embargo, ASP.NET puede utilizar la suplantación para ejecutar el código en el contexto de un usuario autenticado y autorizado.

Cuando la autenticación de Windows está habilitada pero la suplantación está deshabilitada, ASP.NET realiza comprobaciones de acceso a archivos en el módulo de autorización de archivos utilizando las credenciales que se envían desde el explorador. La suplantación no tiene porqué estar habilitada, porque el módulo FileAuthorizationModule garantiza que el usuario que realiza la solicitud tiene acceso de lectura o de escritura al recurso, dependiendo del verbo de la solicitud (por ejemplo, GET o POST) antes de ejecutar la solicitud. Este comportamiento se aplica a cualquier solicitud que introduzca código administrado. En las versiones anteriores de ASP.NET, el acceso a los archivos basado en los URI como "Default.aspx" activaba la comprobación de acceso. En las aplicaciones de ASP.NET MVC, en las que el acceso a los recursos normalmente se realiza utilizando direcciones URL sin extensión, esta comprobación habitualmente no se aplica, porque no hay ningún archivo físico que se deba comprobar. En ese caso, la clase FileAuthorizationModule vuelve para comprobar las listas de control de acceso (ACL) de la carpeta. Sin embargo, comprobar las ACL en un directorio de una aplicación de ASP.NET MVC normalmente no es suficientemente preciso, porque una comprobación en el nivel de archivo se aplica a todos los controladores y vistas de la carpeta. Un método mejor es aplicar el atributo AuthorizeAttribute a los controladores o métodos de acción que se tienen que proteger.

El código que se muestra en este tutorial no requiere la suplantación. Solo debería habilitar la suplantación por las siguientes razones:

  • La aplicación requiere acceso a los recursos locales a través de una API como System.IO.File mediante las credenciales del explorador.

  • La aplicación implementa escenarios avanzados que implican el acceso al recurso remoto basado en Active Directory y Kerberos.

Puede utilizar la suplantación con autenticación de Windows de las siguientes maneras:

  • Autenticación de Windows sin suplantación. Este es el valor predeterminado. ASP.NET realiza operaciones y obtiene acceso a recursos utilizando la identidad de proceso de la aplicación, que de forma predeterminada es la identidad del grupo de aplicaciones en Windows 7 y Windows 2008 R2. Para obtener más información, vea Application Pool Identities.

  • Autenticación de Windows con suplantación. Con este método, la aplicación web suplanta al usuario autenticado y utiliza esa identidad para realizar operaciones y obtener acceso a los recursos locales. Al configurar la aplicación para la suplantación, un token de suplantación del usuario autenticado se adjunta al subproceso de la solicitud web. Como resultado, todo el acceso al recurso local se realiza utilizando la identidad del autor de la llamada.

    NotaNota:

    Utilizar la autenticación de Windows con suplantación produce un token de suplantación y un inicio de sesión asociado que no tienen credenciales de red. Si accede a este sitio web desde un explorador mientras ha iniciado sesión en un equipo diferente del mismo dominio y el sitio web intenta obtener acceso a los recursos de red, terminará con una sesión nula en el servidor remoto y no se podrá obtener acceso al recurso. Para obtener acceso a los recursos remotos necesita delegación. Para obtener más información sobre cómo utilizar la delegación, vea How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0.

  • Autenticación de Windows con suplantación de identidad fija. Con este método, se suplanta una cuenta de Windows concreta para obtener acceso a los recursos utilizando dicha identidad. Debería evitar este método de suplantación; en su lugar, utilice un grupo de aplicaciones personalizado con una identidad de servicio personalizada. Para obtener más información, vea Application Pool Identities.

Para configurar la suplantación

  1. En Administrador de IIS, seleccione la aplicación MvcWA.

  2. En Vista Características, haga doble clic en Autenticación.

    Autenticación del Administrador de IIS
  3. Haga clic con el botón secundario en Suplantación de ASP.NET y seleccione Habilitar.

    Habilitar suplantación de IISmgr
  4. Ejecute la aplicación.

    La propiedad Environment.UserName muestra la identidad suplantada.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft