Scénarios de configuration ASP.NET

Mise à jour : novembre 2007

Lorsque le serveur reçoit une demande pour une ressource Web particulière, ASP.NET calcule de manière hiérarchique les paramètres de configuration de cette ressource, en utilisant tous les fichiers de configuration qui se trouvent dans le chemin d'accès du répertoire virtuel pour l'URL demandée. Les paramètres de configuration les plus « locaux » se substituent aux paramètres des fichiers de configuration parents.

Par exemple, un site Web peut avoir la structure de fichiers physique suivante, le répertoire Application Root étant le répertoire virtuel de l'application.

dtbwsx8s.folders2(fr-fr,VS.90).gif

Normalement, le dernier paramètre de configuration se substitue aux paramètres de la même section fournis dans les répertoires parents. Dans le cas d'un élément de collection, les paramètres ne sont pas substitués ; ils sont ajoutés à la collection.

dtbwsx8s.alert_note(fr-fr,VS.90).gifRemarque :

Un gestionnaire de section personnalisé peut implémenter un schéma d'héritage différent.

Supposons qu'un fichier Web.config existe dans le répertoire SubDir1, mais que les répertoires Application Root ou SubDir2 n'en comportent aucun. Dans ce cas, ASP.NET utilise trois fichiers de configuration pour calculer les paramètres de configuration du répertoire SubDir1. Le fichier de plus haut niveau est celui qui est hébergé dans le répertoire %systemroot%\Microsoft .NET \Framework\Numéroversion\CONFIG. Ce fichier, appelé Machine.config, a une portée de niveau ordinateur. Toutes les applications .NET Framework qui exécutent la version spécifiée de .NET Framework (Numéroversion) héritent des paramètres de ce fichier. Le fichier de plus haut niveau suivant est le fichier Web.config racine, hébergé dans le même emplacement. Toutes les applications ASP.NET qui exécutent la version spécifiée du .NET Framework héritent de ses paramètres. Le troisième fichier de configuration est le fichier Web.config situé dans le répertoire SubDir1.

Supposons que le fichier Web.config du répertoire SubDir1 contient l'élément anonymousIdentification dont l'attribut enabled a la valeur true. Le paramètre par défaut de l'attribut enabled est false. Il s'agit d'une valeur par défaut interne qui n'est spécifiée dans aucun des fichiers de configuration racines. Dans la mesure où il n'existe aucun fichier de configuration dans les répertoires Application Root ou SubDir2 qui modifie l'élément anonymousIdentification, les utilisateurs anonymes n'ont pas accès aux ressources ASP.NET dans ces répertoires. En revanche, les utilisateurs anonymes ont accès aux ressources ASP.NET placées dans le répertoire SubDir1.

dtbwsx8s.alert_security(fr-fr,VS.90).gifNote de sécurité :

Le système de configuration ASP.NET s'applique uniquement aux ressources ASP.NET, inscrites pour être gérées par ASP.NET à l'aide de Aspnet_isapi.dll. Par défaut, le système de configuration ne fournit pas d'autorisation pour les ressources non-ASP.NET. Les fichiers ASP, HTML, TXT, GIF et JPEG, par exemple, sont accessibles par tous les utilisateurs. Dans l'exemple précédent, si l'exploration des répertoires est activée et qu'aucune autre restriction n'est appliquée, tous les utilisateurs peuvent afficher les fichiers autres que les fichiers ASP.NET qui se trouvent dans le répertoire racine de l'application, SubDir1 et SubDir2. Pour plus d'informations sur la sécurité ASP.NET, consultez Sécurité des applications Web ASP.NET.

Le site Web suivant a une structure de fichiers dans laquelle le répertoire virtuel d'application correspond au répertoire racine de l'application (MyAppRootDir).

MyAppRootDir
    SubDir1
        SubDir1A
    SubDir2

Sauf dans les conditions décrites dans la section « Restrictions liées à l'héritage ASP.NET » de Hiérarchie du fichier de configuration ASP.NET et héritage, un paramètre de configuration d'un répertoire quelconque se substitue aux paramètres définis dans les répertoires parents. Par exemple, vous pouvez configurer les paramètres de l'application pour accorder à tous les utilisateurs l'accès aux ressources ASP.NET dans MyAppRootDir et SubDir2 mais n'octroyer qu'à certains utilisateurs sélectionnés l'accès aux ressources ASP.NET de SubDir1 et SubDir1A, en procédant comme suit :

  1. Laissez MyAppRootDir tel quel. Les ressources ASP.NET de MyAppRootDir héritent des paramètres par défaut du fichier Machine.config, dont l'un d'eux autorise l'accès anonyme. À ce stade, MyAppRootDir et les trois sous-répertoires héritent de ce paramètre d'authentification.

  2. Placez un fichier Web.config dans SubDir1 avec l'authentification configurée de telle sorte qu'elle autorise uniquement certains utilisateurs sélectionnés à accéder à SubDir1. Cet accès se substitue à l'accès anonyme autorisé par le paramètre figurant dans le fichier Machine.config et SubDir1A en hérite. SubDir2, qui est au même niveau que SubDir1, n'hérite pas du paramètre d'authentification de SubDir1.

Toutes les applications ASP.NET héritent des paramètres par défaut du fichier Web.config placé au niveau Web racine. Le paramètre par défaut pour la section de configuration de la sécurité de ce fichier permet aux utilisateurs d'accéder à toutes les ressources URL. Dans l'exemple donné, il n'y a pas de fichier de configuration dans le répertoire racine de l'application qui modifie la sécurité, tous les utilisateurs ont donc accès aux ressources ASP.NET qui s'y trouvent (car ce répertoire hérite du fichier de configuration de niveau machine). Si le fichier Web.config placé dans le répertoire SubDir1 contient une section de configuration de la sécurité qui accorde uniquement l'accès à certains utilisateurs, SubDir1A hérite alors de ce paramètre. Dès lors, tous les utilisateurs ont accès aux ressources ASP.NET hébergées dans le répertoire racine de l'application et dans SubDir2, mais seuls des utilisateurs sélectionnés ont accès aux ressources ASP.NET de SubDir1 et SubDir1A.

Les paramètres de configuration des répertoires virtuels, dont les noms conviviaux simplifient les chemins d'accès et masquent les noms des véritables répertoires, sont indépendants de la structure de répertoires physique. En conséquence, les répertoires virtuels doivent être organisés avec soin pour éviter des problèmes de configuration. Par exemple, vous pouvez configurer des répertoires virtuels pour récupérer la page ASP.NET appelée MyResource.aspx dans la structure de répertoires physique suivante.

MyDir
    SubDir1 (mapped from VDir1)
        SubDir1A (mapped from VDir1A)
            MyResource.aspx
    SubDir2

Dans cet exemple, il existe un fichier Web.config dans SubDir1 et un autre fichier Web.config dans SubDir1A. Si un client accède à C:\Subdir1\Subdir1A\MyResource.aspx à l'aide de l'URL http://localhost/vdir1/subdir1A/MyResource.aspx, la ressource hérite des paramètres de configuration de Vdir1. Cependant, si le client accède à la même ressource à l'aide de l'URL http://localhost/vdir1A/MyResource.aspx, elle n'hérite pas des paramètres de Vdir1. Par conséquent, il est déconseillé de créer des répertoires virtuels de cette manière dans la mesure où cela peut provoquer des résultats inattendus, voire une défaillance de l'application.

IIS (Internet Information Services) est le serveur Web de toutes les ressources publiées sur le Web. Le système de configuration ASP.NET s'applique uniquement aux ressources ASP.NET inscrites pour être gérées par ASP.NET à l'aide de Aspnet_isapi.dll. Par défaut, le système de configuration ne fournit pas de sécurité pour les ressources non-ASP.NET. Les fichiers ASP, HTML, TXT, GIF et JPEG, par exemple, sont accessibles par tous les utilisateurs. Dans l'exemple précédent, si l'exploration des répertoires est activée et qu'aucune autre restriction n'est appliquée, tous les utilisateurs peuvent afficher les fichiers autres que les fichiers ASP.NET qui se trouvent dans le répertoire racine de l'application, SubDir1 et SubDir2.

Ajouts de la communauté

Afficher: