Autorización de ASP.NET
La autorización determina si se debería conceder acceso a una identidad a un recurso concreto. EN ASP.NET existen dos formas de autorizar el acceso a un recurso dado:
Autorización de archivos FileAuthorizationModule realiza la autorización de archivos. Realiza una comprobación de la lista de control de acceso (ACL) del archivo de controladores .aspx o .asmx para determinar si un usuario debe tener acceso al archivo. Los permisos de ACL se comprueban para la identidad de Windows (si se habilita la autenticación de Windows) del usuario o para la identidad de Windows del proceso de ASP.NET. Para obtener más información, vea Suplantación de ASP.NET.
Autorización de URL UrlAuthorizationModule realiza la autorización de URL, que asigna usuarios y funciones a direcciones URL en aplicaciones ASP.NET. Este módulo se puede utilizar para permitir o denegar de forma selectiva el acceso a las partes arbitrarias de una aplicación (normalmente los directorios) para usuarios concretos o funciones.
Utilizar la autorización de URL
Con la autorización de URL, permite o deniega explícitamente el acceso a un directorio determinado por nombre de usuario o función. Para ello, se crea una sección authorization en el archivo de configuración para ese directorio. Para habilitar la autorización de URL, basta con especificar una lista de usuarios o funciones en los elementos permitir o denegar de la sección autorización de un archivo de configuración. Los permisos establecidos para un directorio también se aplican a sus subdirectorios, a no ser que los archivos de configuración de un subdirectorio los reemplacen.
A continuación se muestra la sintaxis para la sección authorization:
<authorization>
<[allow|deny] users roles verbs />
</authorization>
Se requiere el elemento allow o deny. Debe especificar el atributo users o roles. Se pueden incluir los dos atributos, aunque no es necesario. El atributo verbs es opcional.
Los elementos allow y deny conceden o revocan el acceso, respectivamente. Cada elemento admite los atributos mostrados en la tabla siguiente:
Atributo | Descripción |
---|---|
users |
Identifica las identidades (cuentas de usuario) a las que se destina el elemento. Los usuarios anónimos se identifican mediante un signo de interrogación (?). Puede especificar todos los usuarios autenticados mediante un asterisco (*). |
roles |
Identifica una función (un objeto RolePrincipal) para la solicitud actual a la que se permite o deniega el acceso al recurso. Para obtener más información, vea Administrar autorizaciones con funciones. |
verbs |
Define los verbos HTTP a los que se aplica la acción, como GET, HEAD y POST. El valor predeterminado es "*" que especifica todos los verbos. |
El siguiente ejemplo concede acceso a la identidad Kim
y a los miembros de la función Admins
, y deniega el acceso a la identidad John
(a menos que la identidad John
esté incluida en la función Admins
) y a todos los usuarios anónimos:
<authorization>
<allow users="Kim"/>
<allow roles="Admins"/>
<deny users="John"/>
<deny users="?"/>
</authorization>
La siguiente sección authorization muestra cómo permitir el acceso a la identidad John
y denegárselo a todos los demás usuarios:
<authorization>
<allow users="John"/>
<deny users="*"/>
</authorization>
Puede especificar varias entidades para los atributos users y roles utilizando una lista separada por comas, como se muestra en el ejemplo siguiente:
<allow users="John, Kim, contoso\Jane"/>
Tenga en cuenta que si especifica el nombre de una cuenta de dominio, el nombre debe incluir tanto el dominio como el nombre de usuario (contoso\Jane
).
El siguiente ejemplo permite a todos los usuarios utilizar el método GET de HTTP para obtener un recurso, pero solo permite a la identidad Kim
realizar una operación POST:
<authorization>
<allow verbs="GET" users="*"/>
<allow verbs="POST" users="Kim"/>
<deny verbs="POST" users="*"/>
</authorization>
Las reglas se aplican de la siguiente manera:
Las reglas contenidas en archivos de configuración en la aplicación tienen prioridad sobre las reglas heredadas. El sistema determina la regla que tiene prioridad creando una lista combinada de todas las reglas de una dirección URL, con las reglas más recientes (más arriba en la jerarquía) al principio de la lista.
Dado un conjunto de reglas combinadas para una aplicación, ASP.NET comienza al principio de la lista y comprueba las reglas hasta que encuentra la primera coincidencia. La configuración predeterminada de ASP.NET incluye un elemento
<allow users="*">
, que autoriza a todos los usuarios. (Esta regla se aplica en último lugar de forma predeterminada.) Si no coincide ninguna otra regla de autorización, se permite la solicitud. Si se encuentra una coincidencia y ésta es un elemento deny, la solicitud se devuelve con el código de estado 401 HTTP. Si coincide un elemento allow, el módulo permite que se siga procesando la solicitud.
En un archivo de configuración, también puede crear un elemento ubicación para especificar un archivo o directorio en particular al que se debe aplicar los valores de configuración en el elemento location.
Vea también
Referencia
FileAuthorizationModule
UrlAuthorizationModule
IPrincipal
Conceptos
Configurar archivos y subdirectorios específicos
Suplantación de ASP.NET