Limitar el acceso a los sitios Web ASP.NET

Actualización: noviembre 2007

La limitación del acceso a una aplicación suele dividirse en dos temas: autenticación, que es cómo una aplicación identifica quién es usted, y autorización, que es cómo una aplicación identifica cuáles son sus permisos. Este tema ofrece una información general de la autenticación y la autorización en las aplicaciones Web ASP.NET. Para obtener información más detallada, vea Seguridad de aplicaciones Web ASP.NET.

Las aplicaciones ASP.NET ofrecen varias opciones diferentes para autenticar a los usuarios. En el caso de las aplicaciones de sólo lectura que puede ver cualquiera, utilice la autenticación anónima. Para tener un acceso más restringido a una aplicación, debe utilizar algún tipo de autenticación para identificar a los usuarios. Hay dos identidades que debe tener en cuenta a la hora de autenticar a los usuarios de su aplicación ASP.NET: la identidad de la aplicación que se utiliza para tener acceso a los recursos de Windows y la identidad de usuario de ASP.NET que se utiliza para identificar a un usuario ante ASP.NET.

Su aplicación puede ejecutarse sin una identidad de usuario de ASP.NET, pero siempre tendrá una identidad de aplicación para Windows. Para ayudar a proteger su aplicación, debe restringir la identidad de Windows para la aplicación a los recursos necesarios, como el acceso a archivos y a bases de datos.

Identidad de aplicación ASP.NET

Cuando una página ASP.NET está en ejecución, el servidor debe tener un contexto de seguridad, o identidad, para el proceso que está ejecutando el código ASP.NET. Esta identidad se utiliza al proteger recursos mediante la seguridad integrada de Windows, como los archivos protegidos mediante el sistema de archivos NTFS o recursos de red.

Por ejemplo, sólo la identidad de aplicación ASP.NET tiene que leer los archivos que contienen el código de aplicación almacenado en el subdirectorio App_Code de una aplicación. Por tanto, se puede restringir la configuración de seguridad de los archivos del directorio App_Code de manera que la identidad de aplicación ASP.NET sólo tenga acceso de lectura. Otro uso frecuente de la identidad de Windows de la aplicación ASP.NET es como identidad de una conexión a SQL Server mediante seguridad integrada. Para obtener más información, vea Listas de control de acceso (ACL) necesarias para ASP.NET y Cómo: Obtener acceso a SQL Server mediante la seguridad integrada de Windows.

Hay varios factores que determinan la identidad de una aplicación ASP.NET. De forma predeterminada, las páginas ASP.NET se ejecutan con la identidad de Windows del servicio que procesa las páginas ASP.NET en el servidor Web. En un equipo que ejecuta Windows Server 2003, esa identidad es la identidad del grupo de aplicaciones del que forma parte la aplicación ASP.NET (de manera predeterminada, la cuenta NETWORK SERVICE). En los equipos que ejecutan Windows 2000 y Windows XP Professional, la identidad es la cuenta local ASPNET que se crea cuando se instala .NET Framework. Esta identidad se puede configurar a una identidad diferente, si se desea. Para obtener más información, vea Configurar la identidad de procesos en ASP.NET.

Puede modificar la identidad de Windows con la que se ejecuta su página ASP.NET mediante el elemento identity de la sección system.web del archivo de configuración. El elemento identity puede utilizarse para indicar a ASP.NET que suplante un Id. de usuario de Windows. La suplantación de una identidad de Windows significa que las páginas ASP.NET para la aplicación se ejecutarán como esa identidad de Windows. Puede especificar un nombre de usuario y una contraseña para suplantar. Como alternativa, puede habilitar la suplantación y ASP.NET se ejecutará de una de dos maneras posibles: una identidad anónima especificada por IIS, o la identidad del explorador autenticada determinada por IIS (por ejemplo, autenticación anónima, autenticación de Windows integrada (NTLM), etc.). Para obtener más información, vea Suplantación de ASP.NET.

Si va a suplantar una identidad de Windows, puede ejecutar código que revierta a la identidad original del proceso en lugar del Id. de usuario suplantado. Por eso, en aquellos entornos en los que tenga que mantener separadas las aplicaciones unas de otras, debe aislarlas en grupos de aplicaciones diferentes en equipos que ejecuten Windows Server 2003. Cada grupo de aplicaciones debe configurarse con una identidad de Windows única.

Puede determinar fácilmente la identidad de Windows del subproceso del sistema operativo que está ejecutando su página ASP.NET mediante la propiedad Name del WindowsIdentity devuelto por el método GetCurrent, como se muestra en el ejemplo de código siguiente.

<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>

Usuario de ASP.NET

La identidad de usuario de ASP.NET se utiliza para tener acceso a recursos específicos de ASP.NET. Por ejemplo, puede identificar una parte de una aplicación para que sólo esté disponible para determinados usuarios, mientras que otras partes de la aplicación estarán disponibles para todos los usuarios.

El elemento authentication de la sección system.web del archivo Web.config de la aplicación determina el usuario de ASP.NET. Tiene varias opciones para autenticar la identidad de ASP.NET para su aplicación. Puede utilizar el nombre de usuario de Windows determinado por IIS, autenticación de formularios de ASP.NET, autenticación Passport o un esquema de autenticación personalizado. Se puede tener acceso a la identidad de ASP.NET utilizando la propiedad User del HttpContext actual. Para obtener información detallada, vea Autenticación de ASP.NET.

Si está utilizando autenticación de formularios de ASP.NET o una solución de autenticación personalizada para proporcionar la identidad de ASP.NET, puede utilizar la pertenencia de ASP.NET para ofrecer funcionalidad de almacén de datos de usuarios y administración de usuarios. Para obtener más información, vea Administrar usuarios mediante suscripciones.

La autorización implica restringir el acceso de los usuarios sólo a los recursos necesarios. Esto incluye restringir el acceso sólo a los archivos, las bases de datos y las partes de su aplicación que sean necesarios. Además, esto incluye el uso de Seguridad de acceso a código para restringir el acceso al código.

Puede restringir el acceso a archivos utilizando listas de control de acceso de NTFS y FileAuthorizationModule. Para obtener más información, vea Autorización de ASP.NET y Listas de control de acceso (ACL) necesarias para ASP.NET.

Puede restringir el acceso a determinadas partes de su aplicación utilizando UrlAuthorizationModule y Administración de funciones de ASP.NET. Para obtener más información, vea Autorización de ASP.NET y Administrar autorizaciones con funciones.

Adiciones de comunidad

AGREGAR
Mostrar: