Compartir a través de


Arquitectura de seguridad de ASP.NET

Actualización: noviembre 2007

En esta sección se proporciona información general sobre la infraestructura de seguridad de ASP.NET. En la siguiente ilustración se muestran las relaciones entre los sistemas de seguridad de ASP.NET.

Arquitectura ASP.NET

Como se muestra en la ilustración, todos los clientes Web se comunican con las aplicaciones ASP.NET a través de Microsoft Internet Information Services (IIS). IIS autentica la solicitud si fuera necesario y, a continuación, busca el recurso solicitado (como una aplicación ASP.NET). Si el cliente está autorizado, el recurso estará disponible.

Cuando se está ejecutando una aplicación ASP.NET, puede utilizar las características de seguridad de ASP.NET integradas. Además, una aplicación ASP.NET puede utilizar las características de seguridad de .NET Framework. Para obtener más información, vea Conceptos clave de seguridad.

Integrar autenticación de ASP.NET con IIS

Además de basarse en las funciones de autenticación de IIS, puede realizar autenticación en ASP.NET. Cuando conozca la autenticación de ASP.NET, entenderá la interacción con los servicios de autenticación de IIS.

Internet Information Services (IIS) supone que se asigna un conjunto de credenciales a una cuenta de Microsoft Windows NT y que se utilizan las credenciales para autenticar a los usuarios. En las versiones 5.0 y 6.0 de IIS, hay tres clases distintas de autenticación: básica, implícita y seguridad integrada de Windows (NTLM o Kerberos). Se puede seleccionar el tipo de autenticación que se desea utilizar en los servicios de administración de IIS. Para obtener más información sobre la autenticación de IIS, consulte la documentación correspondiente.

Si los usuarios solicitan una dirección URL que asigna una aplicación ASP.NET, la información sobre la autenticación y la solicitud se entrega a la aplicación. ASP.NET proporciona la autenticación de formularios. La autenticación de formularios es un sistema que redirige las solicitudes no autenticadas a una página web ASP.NET que usted crea. El usuario proporciona las credenciales y envía la página. Si la aplicación autentica la solicitud, el sistema emite un vale de autenticación en una cookie que contiene las credenciales o una clave para readquirir la identidad. Las solicitudes subsiguientes incluyen un vale de autenticación con la solicitud.

Nota:

La suscripción de ASP.NET y los controles de inicio de sesión de ASP.NET funcionan implícitamente con autenticación de formularios.

Configuración de seguridad del archivo de configuración de ASP.NET

La configuración de seguridad de ASP.NET se configura en los archivos Machine.config y Web.config. Como con la demás información de configuración, la configuración base y la predeterminada se establecen en el archivo Machine.config en el subdirectorio Config de la instalación .NET Framework actual. Puede establecer una configuración específica del sitio y otra específica de la aplicación (incluidos los valores de reemplazo del archivo Machine.config) en los archivos Web.config en los directorios raíz del sitio Web y de la aplicación. Los subdirectorios heredan las configuraciones del directorio, a no ser que se reemplacen por un archivo Web.config del subdirectorio. Para ver un ejemplo del funcionamiento de la seguridad en un sistema de configuración jerárquica, vea Elemento configSections (Esquema de configuración general).

Hay tres subsecciones principales en un archivo Web.config: las secciones autenticación, autorización e identidad. Los valores para cada elemento de seguridad normalmente se establecen en el archivo Machine.config y se reemplazan según sea necesario en el archivo Web.config en la aplicación. Todos los subdirectorios heredan automáticamente estos valores. No obstante, los subdirectorios pueden tener sus propios archivos de configuración que reemplazan valores heredados.

Nota:

La configuración de ASP.NET sólo se aplica a recursos ASP.NET, en concreto a aquéllos que se registraron para que los controlara la extensión Aspnet_isapi.dll en IIS. La configuración de ASP.NET no puede proporcionar autorización para recursos que no haya procesado ASP.NET. Por lo tanto, .txt, .htm, .html, .gif, .jpg, .jpeg, .asp y otros tipos de archivos son accesibles para todos los usuarios (sujetos a los permisos IIS). Por ejemplo, aunque los recursos de un directorio de ASP.NET estén incluidos en un archivo Web.config con acceso restringido, los usuarios pueden ver los archivos de ese directorio, siempre que el explorador de directorios esté activado y no haya otro tipo de restricciones. Estos tipos de archivos pueden estar bajo la seguridad de ASP.NET si se asigna explícitamente dichas extensiones de nombre de archivo a la extensión Aspnet_isapi.dll mediante la herramienta de administración de IIS. Sin embargo, el procesamiento de estos tipos de archivos a través de ASP.NET puede afectar al rendimiento del sitio Web.

Se puede utilizar el elemento de configuración ubicación para especificar el archivo o directorio a los que se deben aplicar las opciones predeterminadas. Para obtener más información, vea Elemento configSections (Esquema de configuración general) y Configurar archivos y subdirectorios específicos. Para obtener más información general sobre la configuración de ASP.NET, vea Información general sobre la configuración de ASP.NET.

El ejemplo siguiente muestra la sintaxis de las secciones de seguridad de un archivo de configuración:

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Los valores predeterminados de estos elementos se incluyen en la tabla siguiente.

Valor predeterminado

Descripción

<allow roles="" />

Una cadena vacía que indica que se permiten todas las funciones de forma predeterminada.

<allow users="*" />

Una cadena vacía que indica que todos los usuarios tienen acceso (no se requiere ninguna autenticación).

<authentication mode="Windows" />

El tipo de autenticación que determina el origen del valor User actual. El valor predeterminado es Windows.

<credentials passwordFormat="SHA1" />

El algoritmo hash que se utiliza en las contraseñas. El valor predeterminado es SHA1.

<deny roles="" />

Una cadena vacía que indica que no se deniega ninguna función de forma predeterminada.

<deny users="" />

Una cadena vacía que indica que no se deniega ningún usuario de forma predeterminada.

<forms loginUrl="logon.aspx" />

Dirección URL a la que se dirige la solicitud si establece la autenticación mode como Forms y si la solicitud no tiene un vale de autenticación válido.

<forms name=".ASPXAUTH" />

El nombre bajo el que la cookie de autenticación de formularios se almacena en el equipo del usuario.

<forms path="/" />

La ruta de acceso a la que se aplica la autenticación de formularios. El valor predeterminado es todas las rutas de acceso desde la raíz de la aplicación hacia abajo.

<forms protection="All" />

La seguridad que se ha aplicado al vale de autenticación de formularios. Los valores incluyen All, None, Encryption y Validation.

<forms timeout="30" />

El tiempo de espera en minutos antes de que el vale de autenticación de formularios expire y los usuarios tengan que volver a autenticarse.

<forms requireSSL="false" />

Un valor booleano que indica si se requiere una conexión SSL para transmitir la cookie de autenticación.

<forms slidingExpiration="true" />

Un valor booleano que indica si está habilitado el plazo de expiración. Para obtener más información, vea la propiedad SlidingExpiration.

<identity impersonate="false" />

Un valor booleano que indica si la suplantación está habilitada. Para obtener más información, vea Suplantación de ASP.NET.

<identity userName="" />

Una cadena vacía que indica que no se especifica ninguna identidad de usuario de forma predeterminada.

<identity password="" />

Una cadena vacía que indica que no se especifica ninguna contraseña para la identidad de usuario de forma predeterminada.

<trust level="Full" originUrl="" />

La directiva de seguridad que se aplicará a la aplicación.

<trustLevel name="Full" policyFile="internal"/>

El archivo de directivas predeterminado para el nivel de confianza Full.

<trustLevel name="High" policyFile="web_hightrust.config"/>

El archivo de directivas predeterminado para el nivel de confianza High.

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

El archivo de directivas predeterminado para el nivel de confianza Medium.

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

El archivo de directivas predeterminado para el nivel de confianza Low.

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

El archivo de directivas predeterminado para el nivel de confianza Minimal.

Vea también

Conceptos

Información general sobre la configuración de ASP.NET

Otros recursos

Proteger sitios web ASP.NET

Conceptos clave de seguridad

Proveedor de autenticación mediante formularios