Compartir a través de


Flujo de datos de seguridad en ASP.NET

Actualización: noviembre 2007

Existen varias maneras de diseñar la seguridad en las aplicaciones ASP.NET. En este tema se describe el flujo de datos de seguridad en dos escenarios comunes: la suplantación y la autenticación de formularios mediante cookies.

Escenario 1: suplantación

El escenario de suplantación se basa en la autenticación de Servicios de Microsoft Internet Information Server (IIS) y en la seguridad de acceso a archivos de Microsoft Windows para minimizar la programación de la seguridad en la propia aplicación ASP.NET. El flujo de datos se muestra en la ilustración siguiente.

Suplantación

En esta ilustración se muestra la siguiente secuencia de eventos:

  1. Una solicitud de un cliente de red llega a IIS.

  2. IIS autentica al cliente utilizando la seguridad básica, implícita o integrada de Windows (NTLM o Kerberos).

  3. Si se autentica al cliente, IIS pasa la solicitud autenticada a ASP.NET.

  4. La aplicación ASP.NET suplanta al cliente que realiza la solicitud utilizando el símbolo (token) de acceso pasado desde IIS, y se basa en los permisos de archivo NTFS para conceder acceso a los recursos. La aplicación ASP.NET sólo necesita comprobar que la suplantación está establecida en true en el archivo de configuración de ASP.NET; no se requiere ningún código de seguridad de ASP.NET.

    Si la suplantación no está habilitada, la aplicación se ejecuta con la identidad de proceso de ASP.NET. En Microsoft Windows 2000 Server y Windows XP Professional, la identidad predeterminada es una cuenta local denominada ASPNET que se crea automáticamente al instalar ASP.NET. En Microsoft Windows Server 2003, la identidad predeterminada es la del grupo de aplicaciones correspondiente a la aplicación IIS (de manera predeterminada, la cuenta Servicio de red).

    Nota:

    Si no se ha habilitado la suplantación y se desea limitar el acceso de un usuario o de un conjunto de usuarios determinado, como los usuarios autenticados mediante la autenticación de formularios, será necesario utilizar algún otro medio de autorización, como la autorización de direcciones URL. Para obtener más información acerca de la autorización de direcciones URL, vea Autorización de ASP.NET.

    Para obtener información más detallada sobre cómo utilizar la suplantación en aplicaciones ASP.NET, vea Suplantación de ASP.NET y Utilizar la autenticación de IIS con la suplantación de ASP.NET.

  5. Si se concede el acceso, la aplicación ASP.NET devuelve el recurso solicitado a través de IIS.

Escenario 2 – Autenticación de formularios

En el escenario de autenticación de formularios, una aplicación obtiene las credenciales, como el nombre y la contraseña, directamente del usuario y determina por sí misma su autenticidad. La aplicación no utiliza la autenticación de IIS, pero la configuración de la autenticación de IIS puede afectar a la autenticación de formularios. Como norma, cuando se utiliza la autenticación de formularios, se habilita el acceso anónimo en IIS. Por otra parte, si los usuarios no pasan la autenticación de IIS, no pueden ponerse en contacto con la aplicación para proporcionar un nombre de usuario y una contraseña para la autenticación de formularios.

El flujo de datos de este escenario se muestra en la ilustración siguiente.

Autenticación mediante formularios

En esta ilustración se muestra la siguiente secuencia de eventos:

  1. Un usuario genera una solicitud de un recurso protegido.

  2. IIS recibe la solicitud y, dado que el acceso anónimo de IIS está habilitado, IIS no realiza ninguna autenticación del usuario y la solicitud se pasa a la aplicación ASP.NET.

  3. Dado que el modo de autenticación de ASP.NET se ha establecido en formularios, la aplicación ASP.NET examina la solicitud para obtener un vale de autenticación de formularios (una cookie concreta). Si no hay ningún vale de autenticación asociado a la solicitud, ASP.NET redirige la solicitud a la página de inicio de sesión especificada en el archivo de configuración de la aplicación.

  4. En la página de inicio de sesión, el usuario escribe las credenciales requeridas, normalmente un nombre y una contraseña. El código de aplicación comprueba las credenciales para confirmar su autenticidad. Si se autentican las credenciales, el código de aplicación asocia a la respuesta un vale de autenticación que representa las credenciales del usuario. (No se incluye la contraseña.) Si se produce un error en la autenticación, la respuesta se devuelve con un mensaje de acceso denegado o se vuelve a mostrar el formulario de inicio de sesión.

    El vale de autenticación emitido se incluirá en las solicitudes que se realicen a la aplicación ASP.NET con posterioridad. ASP.NET examina la validez del vale mediante una comprobación de la autenticación de mensajes (MAC).

  5. Si se autentica al usuario, ASP.NET comprueba la autorización y puede conceder acceso al recurso solicitado inicialmente, redirigir la solicitud a alguna otra página o redirigirla a un módulo de autorización personalizado, donde se comprueba si las credenciales están autorizadas a tener acceso al recurso protegido. Si se produce un error de autorización, ASP.NET redirige al usuario a la página de inicio de sesión.

    Si se autoriza al usuario, se concede el acceso al recurso protegido la aplicación puede requerir una prueba adicional de las credenciales antes de autorizar el acceso al recurso protegido, dependiendo del diseño de la aplicación.

    Nota:

    La autenticación de formularios y la comprobación de la autorización sólo se aplican a los recursos protegidos por los elementos de configuración authentication y authorization. El acceso a los recursos de Windows protegidos mediante listas de control de acceso (ACL) se comprueba utilizando la identidad de Windows actual de la aplicación ASP.NET. Para obtener más información, vea Suplantación de ASP.NET.

Vea también

Tareas

Cómo: Implementar la autenticación de formularios simple

Conceptos

Suplantación de ASP.NET

Utilizar la autenticación de IIS con la suplantación de ASP.NET

Otros recursos

Administrar usuarios mediante suscripciones

Administrar autorizaciones con funciones

Seguridad de aplicaciones Web ASP.NET

Proveedor de autenticación mediante formularios