INFO: Introducción a la seguridad ASP.NET

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

Resumen

Este artículo proporciona una introducción a la seguridad ASP.NET.

Para obtener información general adicional acerca ASP.NET, consulte el siguiente artículo de Microsoft Knowledge Base:
305140 INFO: Guía básica de ASP.NET

Más información

ASP.NET proporciona un mayor control para implementar la seguridad de la aplicación. Seguridad ASP.NET funciona junto con Microsoft Internet Information Services (IIS) e incluye servicios de autenticación y autorización para implementar el modelo de seguridad ASP.NET. ASP.NET también incluye una característica de seguridad basada en funciones que se puede implementar para Microsoft Windows y las cuentas de usuario de Windows no.

En este artículo se divide en las siguientes secciones:

Flujo de seguridad con una solicitud

Los pasos siguientes describen la secuencia de eventos cuando un cliente realiza una solicitud:
  1. Un cliente solicita una página .aspx que reside en un servidor IIS.
  2. Las credenciales del cliente se pasan a IIS.
  3. IIS autentica al cliente y envía el símbolo autenticado junto con la solicitud del cliente al proceso de trabajo ASP.NET.
  4. Según el símbolo autenticado de IIS y la configuración de la aplicación Web, ASP.NET decide si se va a suplantar a un usuario en el subproceso que está procesando la solicitud. Una diferencia distintiva entre las páginas Active Server de Microsoft (ASP) y ASP.NET, ASP.NET ya no representa al usuario autenticado de manera predeterminada. Para habilitar la representación, debe establecer el atributo impersonate de la sección de identidad en el archivo Web.config en true.
Para obtener más información acerca del flujo de seguridad, consulte el tema siguiente en la documentación del Kit de desarrollo de Software (SDK) de.NET Framework:Para obtener información adicional acerca de la suplantación en ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
306158 INFO: implementar la representación en una aplicación ASP.NET
Volver al principio

Valores de configuración relacionados

IIS mantiene valores de configuración relacionados con la seguridad de la metabase de IIS. Sin embargo, ASP.NET mantiene la seguridad (y otros) configuración de lenguaje de marcado Extensible (XML) en archivos de configuración. Aunque por lo general, esto simplifica la implementación de la aplicación desde una perspectiva de seguridad, el modelo de seguridad que adopta la aplicación necesita la configuración correcta de la metabase IIS y la aplicación de ASP.NET a través de su archivo de configuración (Web.config).

Las secciones de configuración siguientes están relacionadas con la seguridad ASP.NET:
Volver al principio

Autenticación de

La autenticación es el proceso mediante el cual se obtienen credenciales de identificación como el nombre y la contraseña del usuario y validan dichas credenciales contra alguna autoridad.

ASP.NET proporciona cuatro proveedores de autenticación:

Autenticación mediante formularios

Autenticación mediante formularios hace referencia a un sistema que redirige las solicitudes no autenticadas a un formulario de lenguaje de marcado de hipertexto (HTML) en el que los usuarios escriben sus credenciales. Después de que el usuario proporciona las credenciales y envía el formulario, la aplicación autentica la solicitud y el sistema emite un vale de autorización en forma de una cookie. Esta cookie contiene las credenciales o una clave para readquirir la identidad. Las solicitudes posteriores del explorador incluyen automáticamente la cookie.

Para obtener más información acerca de la autenticación de formularios, consulte el tema siguiente en la documentación del SDK de.NET Framework:
El proveedor de autenticación de formularios
http://msdn.microsoft.com/en-us/library/907hb5w9(vs.71).aspx
Información adicional la autenticación mediante formularios de ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
301240 Cómo: implementar la autenticación basada en formularios en su aplicación ASP.NET mediante .NET C#

Autenticación de Windows

En la autenticación de Windows, IIS realiza la autenticación y el símbolo autenticado se envía al proceso de trabajo ASP.NET. La ventaja de utilizar la autenticación de Windows es que requiere una codificación mínima. Es aconsejable utilizar la autenticación de Windows para suplantar la cuenta de usuario de Windows que IIS autentica antes de entregar la solicitud a ASP.NET.

Para obtener más información acerca de la autenticación de Windows, consulte el tema siguiente en la documentación del SDK de.NET Framework:

Autenticación de Passport

La autenticación de Passport es un servicio de autenticación centralizado, que proporciona Microsoft, que ofrece un inicio de sesión único y servicios de perfil principales para sitios miembros. Normalmente, se utiliza la autenticación de Passport cuando necesite capacidad de inicio de sesión único en varios dominios.

Para obtener más información acerca de la autenticación de Passport, consulte el tema siguiente en la documentación del SDK de.NET Framework:

Autenticación predeterminada

Autenticación predeterminada se utiliza cuando no se desea ninguna seguridad en su aplicación Web; se requiere para este proveedor de seguridad de acceso anónimo. Entre todos los proveedores de autenticación, la autenticación predeterminada proporciona el máximo rendimiento de su aplicación. Este proveedor de autenticación se usa también cuando utiliza su propio módulo de seguridad personalizado.

Volver al principio

Autorización

La autorización es el proceso que comprueba si el usuario autenticado tiene acceso a los recursos solicitados.

ASP.NET proporciona los proveedores de autorización siguientes:

FileAuthorization

La clase FileAuthorizationModule realiza la autorización de archivos y está activa cuando se utiliza la autenticación de Windows. FileAuthorizationModule es responsable de realizar comprobaciones en Windows Access Control Lists (ACL) para determinar si un usuario debería tener acceso.

UrlAuthorization

La clase UrlAuthorizationModule realiza la autorización del localizador de recursos universal (URL), que controla la autorización basada en el espacio de nombres URI. Espacios de nombres URI pueden ser muy diferente de las rutas de carpeta y archivo físicas que utilizan permisos NTFS.

UrlAuthorizationModule implementa aserciones de autorización positivas y negativas; es decir, puede usar el módulo para permitir o denegar el acceso a partes arbitrarias del espacio de nombres URI para usuarios, funciones (como administrador, evaluadores y administradores) y verbos (como GET y POST) de forma selectiva.

Para obtener más información acerca de la autorización en ASP.NET, consulte el tema siguiente en la documentación del SDK de.NET Framework:Volver al principio

Seguridad basada en funciones

Seguridad basada en funciones de ASP.NET es similar a la seguridad basada en funciones que usan Microsoft COM + y Microsoft Transaction Server (MTS), aunque hay diferencias importantes. Seguridad basada en funciones de ASP.NET no se limita a los grupos y cuentas de Windows. Por ejemplo, si está habilitada la autenticación de Windows y la suplantación, la identidad del usuario es una identidad de Windows (User.Identity.Name = "Dominio\nombreDeUsuario"). Puede comprobar las identidades para la suscripción a funciones específicas y restringir el acceso según corresponda. Por ejemplo:

Código de Visual Basic .NET
If User.IsInRole("BUILTIN\Administrators") Then   Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
Response.Write("You are a User")
Else
Response.Write("Invalid user")
End if

Código de Visual C#.
if ( User.IsInRole("BUILTIN\\Administrators"))   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
Response.Write("You are a User");
else
Response.Write("Invalid user");

Si está utilizando autenticación de formularios, no se asignan funciones al usuario autenticado; debe hacerlo mediante programación. Para asignar funciones al usuario autenticado, utilice el evento OnAuthenticate del módulo de autenticación (que es el módulo de autenticación de formularios en este ejemplo) para crear un nuevo objeto GenericPrincipal y asignarlo a la propiedad User de HttpContext. El siguiente código muestra esto:

Código de Visual Basic .NET
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)   If (Not(HttpContext.Current.User Is Nothing)) Then
If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
Dim myRoles(3) As String
myRoles(0)= "managers"
myRoles(1)= "testers"
myRoles(2)= "developers"
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles)
End If
End If
End Sub

Código de Visual C#.
public void Application_AuthenticateRequest(Object s, EventArgs e)      {
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
{
System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
String[] myRoles = new String[3];
myRoles[0]= "managers";
myRoles[1]= "testers";
myRoles[2]= "developers";
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
}
}
}

Para comprobar si el usuario está en un rol específico y restringir el acceso según corresponda, utilice el código siguiente (o similar) en las páginas. aspx:

Código de Visual Basic .NET
If User.IsInRole("managers") Then   Response.Write("You are a Manager")
Else If User.IsInRole("testers") Then
Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
Response.Write("You are a Developer")
End if

Código de Visual C#.
if (User.IsInRole("managers"))   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
Response.Write("You are a Developer");

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
306238 Cómo: implementar seguridad basada en funciones con autenticación basada en formularios en su aplicación ASP.NET mediante Visual Basic .NET
Para obtener más información acerca de la seguridad basada en funciones, consulte el tema siguiente en la documentación del SDK de.NET Framework:

Referencias

Para obtener información sobre las directrices de seguridad ASP.NET, consulte el siguiente documento MSDN:
Autenticación en ASP.NET: directrices de seguridad de .NET
http://msdn.microsoft.com/en-us/library/ms978378.aspx
Para obtener información general acerca de ASP.NET, consulte el siguiente grupo de noticias MSDN:Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
311094 de error: mensaje de Error "ConfigurationException" cuando suplanta cuentas configuración de lectura
306359 PRB: Request.ServerVariables("LOGON_USER") devuelve una cadena en ASP.NET vacía
313091 Cómo: crear claves utilizando Visual Basic .NET for Use in Forms Authentication
313116 PRB: formularios autenticación de las solicitudes no se dirigen a loginUrl página
Para obtener más información, consulte los libros siguientes:
Reilly, J. Douglas diseñar aplicaciones ASP.NET de Microsoft. Microsoft Press, 2001.

Esposito, Dino. Creación de soluciones Web con ASP.NET y ADO.NET. Microsoft Press, 2001.
Propiedades

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

Comentarios