Autorisation ASP.NET
Mise à jour : novembre 2007
L'autorisation détermine si une identité doit se voir accorder l'accès à une ressource spécifique. Dans ASP.NET, il existe deux façons d'autoriser l'accès à une ressource donnée :
Autorisation de fichier L'autorisation de fichier est effectuée par l'objet FileAuthorizationModule. Il vérifie la liste de contrôle d'accès (ACL) du fichier gestionnaire .aspx ou .asmx pour déterminer si un utilisateur peut accéder au fichier. Les autorisations ACL sont vérifiées pour l'identité Windows de l'utilisateur (si l'authentification Windows est activée) ou pour l'identité Windows du processus ASP.NET. Pour plus d'informations, consultez Emprunt d'identité ASP.NET.
Autorisation d'URL L'autorisation d'URL est exécutée par l'objet UrlAuthorizationModule, qui mappe les rôles et les utilisateurs avec les URL des applications ASP.NET. Ce module peut être utilisé pour, de façon sélective, autoriser ou refuser l'accès de rôles ou d'utilisateurs spécifiques aux parties arbitraires d'une application (en général, les répertoires).
Utilisation de l'autorisation d'URL
Avec l'autorisation d'URL, vous autorisez ou refusez explicitement l'accès à un répertoire particulier en fonction du rôle ou du nom d'utilisateur. À cette fin, vous créez une section authorization dans le fichier de configuration de ce répertoire. Pour activer l'autorisation d'URL, vous spécifiez une liste d'utilisateurs ou de rôles dans les éléments allow ou deny de la section authorization d'un fichier de configuration. Les autorisations établies pour un répertoire s'appliquent également à ses sous-répertoires, à moins que les fichiers de configuration d'un sous-répertoire ne les substituent.
Les éléments suivants illustrent la syntaxe de la section authorization :
<authorization>
<[allow|deny] usersrolesverbs />
</authorization>
L'élément allow ou deny est obligatoire. Vous devez spécifier l'attribut users ou roles. Vous pouvez inclure les deux, mais ce n'est pas obligatoire. L'attribut verbs est facultatif.
Les éléments allow et deny accordent et révoquent respectivement l'accès. Chaque élément prend en charge les attributs affichés dans le tableau suivant :
Attribut |
Description |
---|---|
users |
Identifie les identités ciblées (comptes utilisateur) pour cet élément. Les utilisateurs anonymes sont identifiés à l'aide d'un point d'interrogation (?). Vous pouvez spécifier tous les utilisateurs authentifiés à l'aide d'un astérisque (*). |
roles |
Identifie un rôle (un objet RolePrincipal) pour la demande en cours à laquelle l'accès à la ressource est accordé ou refusé. Pour plus d'informations, consultez Gestion de l'autorisation à l'aide de rôles. |
verbs |
Définit les verbes HTTP auxquels l'action s'applique, tels que GET, HEAD et POST. La valeur par défaut est « * », qui spécifie tous les verbes. |
L'exemple suivant accorde l'accès à l'identité Kim et aux membres du rôle Admins, et refuse l'accès à l'identité John (à moins que l'identité John ne soit incluse dans le rôle Admins) et à tous les utilisateurs anonymes :
<authorization>
<allow users="Kim"/>
<allow roles="Admins"/>
<deny users="John"/>
<deny users="?"/>
</authorization>
La section authorization suivante indique comment autoriser l'accès à l'identité John et le refuser à tous les autres utilisateurs :
<authorization>
<allow users="John"/>
<deny users="*"/>
</authorization>
Vous pouvez spécifier plusieurs entités pour les deux attributs users et roles en utilisant une liste avec la virgule comme séparateur, comme illustré dans l'exemple suivant :
<allow users="John, Kim, contoso\Jane"/>
Notez que si vous spécifiez un nom de compte de domaine, le nom doit inclure à la fois le domaine et le nom d'utilisateur (contoso\Jane).
L'exemple suivant permet à tous les utilisateurs d'exécuter une opération HTTP GET pour une ressource, mais autorise uniquement l'identité Kim à effectuer une opération POST :
<authorization>
<allow verbs="GET" users="*"/>
<allow verbs="POST" users="Kim"/>
<deny verbs="POST" users="*"/>
</authorization>
Les règles sont appliquées de la façon suivante :
Les règles contenues dans les fichiers de configuration du niveau application ont priorité sur les règles héritées. Le système détermine quelle règle est prioritaire en fusionnant dans une liste toutes les règles d'une URL, avec les règles les plus récentes (celles les plus proches dans la hiérarchie) en début de liste.
Soit un ensemble de règles fusionnées pour une application ASP.NET, le système commence au début de la liste et vérifie les règles jusqu'à ce qu'il trouve une correspondance. La configuration par défaut pour ASP.NET contient un élément <allow users="*">, qui autorise tous les utilisateurs. (Par défaut, cette règle est appliquée en dernier.) Si aucune autre règle d'autorisation ne correspond, la demande est autorisée. Si une correspondance est trouvée et qu'il s'agit d'un élément deny, la demande est retournée avec le code d'état HTTP 401. Si un élément allow correspond, le module autorise le traitement plus avant de la demande.
Dans un fichier de configuration, vous pouvez aussi créer un élément location pour spécifier un fichier ou un répertoire particulier aux paramètres duquel l'élément location doit s'appliquer.
Voir aussi
Concepts
Configuration de fichiers et de sous-répertoires spécifiques