Arquitectura ASP.NET
En esta sección se proporciona una descripción general sobre las relaciones entre los subsistemas y la infraestructura de ASP.NET, con respecto a la seguridad. 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 Servicios de Microsoft Internet Information Server (IIS). IIS descifra y, opcionalmente, realiza la autenticación de la solicitud. Si la opción Permitir anónimos está establecida en true, no se efectúa ninguna autenticación. IIS también busca el recurso solicitado (como una aplicación ASP.NET) y, si se autoriza al cliente, devuelve el recurso correspondiente.
Además de las características de seguridad integradas de ASP.NET, una aplicación ASP.NET puede utilizar características de seguridad de bajo nivel de .NET Framework. Para obtener más información, vea Conceptos clave de seguridad.
Integración con IIS
Si se considera la posibilidad de utilizar la autenticación de ASP.NET, es importante comprender cómo interactúa con los servicios de autenticación de IIS.
Servicios de Internet Information Server (IIS) supone siempre 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 IIS 5.0 hasta 6.0, existen tres clases distintas de autenticación: básica, implícita y Autenticación 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 se solicita una dirección URL que contiene una aplicación ASP.NET, la información sobre la autenticación y la solicitud se entrega a la aplicación. ASP.NET proporciona dos tipos adicionales de autenticación, que se describen en la tabla siguiente.
Proveedor de autenticación de ASP.NET | Descripción |
---|---|
Autenticación mediante formularios | Sistema que redirige las solicitudes no autenticadas a un formulario HTML mediante la redirección del cliente HTTP. El usuario proporciona las credenciales y envía el formulario. 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 posteriores se emiten con la cookie en los encabezados de la solicitud; se autentican y se autorizan en un controlador ASP.NET mediante el método de validación que especifique el programador de la aplicación. |
Autenticación mediante Passport | Servicio de autenticación centralizado proporcionado por Microsoft que ofrece a los sitios Web suscritos servicios de perfil básico y un inicio de sesión único. |
Utilizar archivos de configuración ASP.NET
La configuración de ASP.NET, de la que forma parte la seguridad, tiene una arquitectura jerárquica. Toda la información de configuración de ASP.NET se encuentra en los archivos denominados Web.config y Machine.config. Web.config puede colocarse en los mismos directorios que los archivos de la aplicación. El archivo Machine.config se encuentra en el directorio Config de la raíz de la instalación. Los subdirectorios heredan las configuraciones del directorio, a no ser que se reemplacen por un archivo Web.config del subdirectorio. En un archivo Web.config, hay secciones para cada categoría principal de las funcionalidades de ASP.NET. Para obtener un ejemplo del funcionamiento de la seguridad en un sistema de configuración jerárquica, vea Arquitectura de configuración jerárquica.
La sección de seguridad de un archivo Web.config se organiza de la forma siguiente:
<authentication mode="[Windows|Forms|Passport|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="[UserName]"
password="[password]"/>
</credentials>
</forms>
<passport redirectUrl="internal"/>
</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\user_name]"
password="[user_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= > | No hay ningún valor predeterminado. |
<allow users="*"> | Todos |
<authentication mode="Windows"> | El modo de autenticación no se puede establecer en un nivel inferior al directorio raíz de la aplicación. |
<credentials passwordFormat="SHA1"> | Algoritmo hash utilizado en las contraseñas. |
<deny roles=""> | Vacío |
<allow users="*"> | Vacío |
<forms loginUrl="login.aspx"> | Si establece el modo en Forms y la solicitud no tiene un vale válido (cookie), ésta es la dirección URL a la que se dirige la solicitud para un inicio de sesión basado en formularios. |
<forms name=".ASPXAUTH"> | Nombre de cookie predeterminado. |
<forms path="/"> | Ruta de acceso |
<forms protection="All"> | Type=[All|None|Encryption|Validation]. |
<forms timeout="30"> | Tiempo de espera expresado en minutos. 30 minutos es el valor predeterminado. |
<forms requireSSL="false"> | Especifica que no se requiere una conexión segura para transmitir la cookie de autenticación. |
<forms slidingExpiration="true"> | Especifica que está habilitado el plazo de caducidad. |
<identity impersonate="true" > | La representación está habilitada de manera predeterminada. |
<identity userName=""> | Vacío |
<identity password=""> | Vacío |
<passport redirectUrl="internal"> | Si se establece el modo en Passport y la página solicitada requiere autenticación (se deniega el acceso a los usuarios anónimos) pero el usuario no ha iniciado la sesión con Passport, se redirigirá al usuario a esta dirección URL. |
<trust level="Full" originUrl="" /> | El nivel predeterminado es Full. |
<trustLevel name="Full" policyFile="internal"/> | Archivo de directivas predeterminado para el nivel de confianza Full. |
<trustLevel name="High" policyFile="web_hightrust.config"/> | Archivo de directivas predeterminado para el nivel de confianza High. |
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/> | Archivo de directivas predeterminado para el nivel de confianza Medium. |
<trustLevel name="Low" policyFile="web_lowtrust.config"/> | Archivo de directivas predeterminado para el nivel de confianza Low. |
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/> | Archivo de directivas predeterminado para el nivel de confianza Minimal. |
<user name=""> | Vacío |
<user password=""> | Vacío |
Hay tres subsecciones principales en un archivo Web.config: autenticación, autorización e identidad. Los valores de estos elementos de seguridad se establecen, por lo general, reemplazando una sección del archivo de configuración del equipo con una sección similar en un archivo de configuración de la aplicación que se encuentra en el directorio raíz de 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 otros valores.
Nota La configuración de ASP.NET sólo se aplica a los recursos ASP.NET (los recursos registrados que se controlan en Aspnet_isapi.dll). Desafortunadamente, la configuración de ASP.NET no puede proporcionar autorización para los recursos que no se controlan en Aspnet_isapi.dll, por tanto, los usuarios siguen teniendo acceso a archivos TXT, HTML, GIF, JPEG, ASP y otros tipos de archivos, en función de los permisos de 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.
Esta situación se puede evitar asignando explícitamente estos archivos, aunque no los directorios, al archivo Aspnet_isapi.dll mediante la herramienta de administración de IIS. No obstante, esta acción puede afectar al rendimiento.
Se pueden utilizar las etiquetas <location></location> para especificar el archivo o directorio a los que se deben aplicar los valores predeterminados. Para obtener más información sobre cómo utilizar la etiqueta <location>, vea Arquitectura de configuración jerárquica y Valores <Location> de configuración.
Para obtener más información general sobre la configuración de ASP.NET, vea Configuración de ASP.NET.
Vea también
Seguridad ASP.NET de aplicaciones Web | Conceptos clave de seguridad | Eventos FormsAuthentication | Proveedor de autenticación mediante Passport | Arquitectura de configuración jerárquica | Valores <Location> de configuración | Configuración de ASP.NET