Cómo proteger una aplicación ASP.NET utilizando la seguridad de Windows


En este artículo se refiere a los siguientes espacios de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.Security

EN ESTA TAREA

Resumen

ASP.NET puede utilizarse junto con Microsoft Internet Information Services (IIS) para autenticar a los usuarios de Web basados en sus credenciales de cuenta de usuario de Windows Server 2003 o en Microsoft Windows 2000. El motor de ejecución de ASP.NET puede configurarse también para suplantar a los usuarios de Web o utilizar su propia identidad de Windows cuando tiene acceso a recursos como archivos o bases de datos.

Volver al principio

Requisitos

Necesita el siguiente hardware, el software y la infraestructura de red para realizar los procedimientos de este artículo:
  • Windows 2000 Server Service Pack 2
  • IIS 5.0
  • Windows Server 2003 con IIS 6.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio .NET
También se necesita experiencia con lo siguiente:
  • Desarrollo de ASP.NET con Visual Basic .NET
  • Administración de IIS
  • Administración de cuentas de usuario de Windows 2000
Volver al principio

Cómo desarrollar el sitio Web

En este procedimiento, creará una aplicación Web ASP.NET sencilla, que se protegerán mediante la autenticación de Windows.
  1. Inicie Visual Studio .NET y cree una nueva aplicación Web ASP.NET de Visual Basic denominada "WindowsSite."
  2. Arrastre un control label desde el cuadro de herramientas hasta el formulario Web WebForm1.aspx y, a continuación, establezca su propiedad ID en
    authUserPrincipalLabel.
  3. Arrastre un segundo control label desde el cuadro de herramientas hasta el formulario Web WebForm1.aspx y, a continuación, establezca su propiedad ID en
    aspPrincipalLabel.
  4. Haga doble clic en WebForm1.aspx para ver la ventana de código y, a continuación, agregue la instrucción Imports siguiente encima de la declaración de clase:
    Imports System.Security
    Agregue el código siguiente al procedimiento de evento Page_Load:
    Dim authUserName As StringDim aspUserName As String
    authUserName = User.Identity.Name
    aspUserName = Principal.WindowsIdentity.GetCurrent.Name
    authUserPrincipalLabel.Text = "You are: " & authUserName
    aspPrincipalLabel.Text = "This page runs as: " & aspUserName

  5. Ver el archivo Web.config del proyecto y, a continuación, busque la
    elemento de autenticación . Compruebe que el atributo mode tiene un valor de Windows.
  6. Genere y guarde el proyecto.
  7. Ejecute el proyecto y, a continuación, confirme que la página se muestra el siguiente mensaje:
    • En Windows 2000
      Va:
      Esta página se ejecuta como: DomainOrServer\ASPNET
    • En Windows Server 2003
      Va:
      Esta página se ejecuta como: DomainOrServer\NETWORK SERVICE
    Nota: Su nombre de usuario no se muestra porque no han autenticado por IIS; aún está habilitado el acceso anónimo.
  8. Salga de Internet Explorer para detener el proyecto.
Volver al principio

Cómo deshabilitar el acceso anónimo

En este procedimiento, va a configurar IIS para que requiera autenticación integrada de Windows para el sitio WindowsSite.
  1. Minimice Visual Studio y, a continuación, inicie el Administrador de servicios Internet desde el grupo de programas Herramientas administrativas.
  2. Expanda su servidor y su sitio Web predeterminado, haga clic en el sitio WindowsSite y, a continuación, haga clic en Propiedades.
  3. En la ficha Seguridad de directorios en el cuadro de diálogo de Propiedades de WindowsSite , haga clic en el botón Editar en la sección "Control de autenticación y acceso anónimo".
  4. Haga clic para desactivar la casilla de verificación acceso anónimo , compruebe que está activada la casilla de verificación autenticación de Windows integrada y, a continuación, haga clic en Aceptar.
  5. Haga clic en Aceptar para cerrar el cuadro de diálogo de Propiedades de WindowsSite .
  6. Vuelva a Visual Studio y, a continuación, ejecute el proyecto. Confirme que la página se muestra el siguiente mensaje:
    • En Windows 2000
      Usted es: nombre de usuario de Windows de su
      Esta página se ejecuta como: DomainOrServer\ASPNET
    • En Windows Server 2003
      Usted es: nombre de usuario de Windows de su
      Esta página se ejecuta como: DomainOrServer\NETWORK SERVICE
    Nota: Ha sido autenticado a través de su cuenta de Windows. Si no había ha iniciado sesión en Windows, habría que se me solicita un nombre de usuario de Windows y una contraseña.
  7. Salga de Internet Explorer para detener el proyecto.
Volver al principio

Autorización

En ASP.NET, es posible permitir la autorización para la aplicación al realizar configuración adicional disponible en el archivo Web.config. Puede permitir que determinados usuarios o determinados grupos de acceso a estos parámetros adicionales. Los ejemplos siguientes describen esta capacidad. Para permitir el acceso a todos los usuarios que se encuentra en el grupo de Windows NT que se llama "Administradores", utilice el código siguiente:
<configuration>     <system.web>
<authorization>
<allow roles="domainname\Managers" />
<deny users="*" />
</authorization>
</system.web>
</configuration>

Para permitir el acceso sólo a determinados usuarios, utilice el código siguiente:
<configuration>     <system.web>
<authorization>
<allow users="domainname\user1,domainname\user2,domainname\user3" />
<deny users="*" />
</authorization>
</system.web>
</configuration>

Nota: Puede hacer referencia a varias funciones o usuarios cuando se usa una lista separada por comas.

Volver al principio

Cómo habilitar la suplantación

En este procedimiento, configurará la aplicación WindowsSite para suplantar al usuario de Windows que tiene acceso a ella.
  1. En Visual Studio, vea el archivo Web.config para el proyecto WindowsSite.
  2. Agregue el siguiente elemento después de la
    elemento de autenticación :
    <identity impersonate = "true" />
  3. Guarde el archivo Web.config.
  4. Ejecute el proyecto. Confirme que la página se muestra el mensaje siguiente (tenga en cuenta que el motor de ejecución de ASP.NET utilizará las credenciales de Windows para tener acceso a recursos en su nombre):
    Usted es: nombre de usuario de Windows de su
    Esta página se ejecuta como: nombre de usuario de Windows de su
  5. Salga de Internet Explorer para detener el proyecto.
Volver al principio

Cómo asignar a una entidad personalizada

En este procedimiento, configurará la aplicación WindowsSite para usar a un principal de seguridad personalizada:
  1. Inicie la característica de administración de equipos en el grupo de programas Herramientas administrativas. Crear una nueva cuenta de usuario de Windows 2000 denominada "WindowsSite", con la contraseña "password" (tenga en cuenta si el servidor es un controlador de dominio y, a continuación, utilice la herramienta Active Directory Users and Computers).
  2. Haga clic para desactivar la casilla de verificación el usuario debe cambiar la contraseña en el siguiente inicio de sesión . Nota: El objeto principal personalizado que seleccione debe tener los permisos que se describen en el siguiente artículo de Knowledge Base:
    317012 INFO: proceso e identidad de solicitud en ASP.NET
  3. Cuando se ha creado la cuenta WindowsSite, cierre la herramienta administrativa que utilizó para crearla.
  4. En Visual Studio, vea el archivo Web.config para el proyecto WindowsSite.
  5. Editar el elemento de identidad para que quede como sigue:
    identity impersonate = "true"
    userName = " DomainOrServerName \WindowsSite"
    password = "password"/>

    donde DomainOrServerName es el nombre de su dominio de Windows 2000 o Windows Server 2003 (en un entorno de dominio) o del equipo (en un entorno de grupo de trabajo).
  6. Guarde el archivo Web.config.
  7. Ejecute el proyecto. Confirme que la página se muestra el siguiente mensaje:
    Usted es: nombre de usuario de Windows de su
    Esta página se ejecuta como: DomainOrServerName\WindowsSite
    Nota: Aspnet_wp.exe utilizará las credenciales de Windows que ha especificado para tener acceso a recursos en su nombre.
  8. Salga de Internet Explorer para detener el proyecto.
Nota: La identidad del proceso que suplanta a un usuario específico en un subproceso debe tener el privilegio actuar como parte del sistema operativo .
  • En Windows 2000, de forma predeterminada, el proceso Aspnet_wp.exe se ejecuta bajo una cuenta de equipo denominada ASPNET.
  • En Windows Server 2003, de forma predeterminada, el proceso Aspnet_wp.exe se ejecuta bajo una cuenta de equipo que se denomina NetworkService. Sin embargo, esta cuenta no tiene los privilegios correctos para suplantar a un usuario específico. Recibirá un mensaje de error si intenta representar a un usuario específico.
Para evitar este problema, utilice uno de los métodos siguientes:
  • Conceder el privilegio actuar como parte del sistema operativo a la cuenta ASPNET (la cuenta con privilegios mínimos).

    Nota: Aunque puede utilizar este método para solucionar el problema, Microsoft recomienda este método.
  • Cambiar la cuenta que el proceso Aspnet_wp.exe se ejecuta bajo la cuenta System en la sección de configuración < processModel > del archivo Machine.config.
Para obtener más información acerca del proceso ASPNET, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Volver al principio

Solución de problemas

Seguridad de Windows en un sitio Web de ASP.NET puede ser mejorado (y complicado) mediante permisos de archivo NTFS. Si su cuenta de Windows no tiene permisos para leer una página Web ASP.NET, IIS le pedirá las credenciales de Windows alternativas. De forma similar, si una página ASP.NET intenta obtener acceso a la entidad de seguridad utilizada por el motor de ejecución de ASP.NET no tiene acceso a un archivo, se le pedirá las credenciales alternativas. Los permisos NTFS son una forma efectiva para controlar el acceso a las subdivisiones de un sitio Web.

Volver al principio

Referencias

Para obtener más información acerca de cómo utilizar la autenticación de Windows en un sitio Web ASP.NET, vea el tema de "Seguridad" de aplicación Web de ASP.NET en la documentación de.NET Framework.

Consulte también el artículo "Autenticación en ASP.NET: directrices de seguridad para. NET" en el siguiente sitio Web de MSDN:Volver al principio
Propiedades

Id. de artículo: 315736 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios