Guide pratique pour utiliser la délégation de configuration dans IIS 7.0
par Saad Ladki
Abstract
Cet article explique comment activer la configuration déléguée sur le serveur. Il explique comment déployer des paramètres de configuration pour le serveur et pour vos applications, ainsi que les pages de contenu et le code de l’application.
Une fois que l’administrateur de l’ordinateur a défini l’application ou le répertoire virtuel pour votre utilisation dans le fichier de configuration maître %windir%\system32\inetsrv\config\applicationHost.config
et que des sections spécifiques autorisées ont été déléguées, vous pouvez contrôler les paramètres au niveau de l’application : en définissant des paramètres dans le fichier web.config de l’application, vous remplacez les valeurs par défaut globales. Ce contrôle est possible si vous avez accès au répertoire de l’application, même si vous n’êtes pas administrateur local sur l’ordinateur.
À la lecture de ce document, vous allez découvrir comment définir des applications et des répertoires virtuels au niveau global, déverrouiller des sections de configuration pour la délégation et remplacer des paramètres de configuration pour des applications individuelles à un niveau inférieur dans la hiérarchie de configuration.
Introduction
IIS permet aux administrateurs d’ordinateurs de déléguer la tâche de définition et de modification de la configuration aux propriétaires de site et d’application. Pour cela, utilisez les fichiers web.config dans les répertoires de contenu. Ces fichiers spécifient des sections de configuration qui prennent effet à leur niveau dans la hiérarchie et aux niveaux inférieurs. L’administrateur de l’ordinateur doit déverrouiller explicitement les sections au niveau global pour permettre une telle délégation. Par défaut, la plupart des sections IIS sont verrouillées pour la délégation, et toutes les sections du .NET Framework (y compris ASP.NET) ne sont pas verrouillées au niveau global.
Ce document explique comment définir de nouvelles applications et de nouveaux répertoires virtuels au niveau global (seuls les administrateurs d’ordinateurs peuvent effectuer cette tâche ; elle ne peut jamais être déléguée).
Ce document explique ensuite comment utiliser la commande xcopy-deploy web.config avec le contenu de l’application pour remplacer certains paramètres à un niveau spécifique. Il explique également les concepts fondamentaux du système de configuration et la manière d’effectuer ces tâches par modification directe des fichiers de configuration, sans utiliser l’interface utilisateur ni d’autres abstractions sur le système de configuration.
Prérequis
- Vérifiez qu’IIS 7.0 ou version ultérieure est installé sur l’ordinateur. Accédez à
http://localhost/
à partir d’Internet Explorer et constatez que la page par défaut « En cours de construction » s’ouvre. Si IIS n’est pas installé, reportez-vous aux instructions du guide pratique sur l’installation. - Vérifiez que vous disposez de privilèges administratifs sur l’ordinateur. Par défaut, vous ne les avez pas si vous êtes connecté en tant qu’utilisateur autre que le compte Administrateur intégré, même si cet utilisateur a été ajouté au groupe Administrateurs local sur l’ordinateur. Il s’agit d’une nouvelle fonctionnalité de sécurité dans Windows Server® 2008, appelée compte d’utilisateur limité, qui sort du champ d’IIS. Connectez-vous avec le compte Administrateur intégré ou appelez explicitement des applications en tant qu’administrateur intégré, le cas échéant, à l'aide de l’outil en ligne de commande « runas » :
Par exemple, pour lancer notepad.exe, exécutez la commande suivante : « runas /user:administrator notepad.exe ». Le mot de passe du compte Administrateur vous sera alors demandé. Il est utile d’avoir un interpréteur de commandes cmd-box dont les privilèges sont déjà élevés à l’aide de la commande « runas /user:administrator cmd.exe ». Chaque application que vous exécutez à partir de ce cmd-box disposera également de privilèges élevés et vous n’aurez pas besoin d’utiliser la syntaxe « runas » à partir de ce cmd-box.
- Vérifiez que le fichier de configuration maître est sauvegardé. Copiez simplement applicationHost.config dans un autre fichier afin de pouvoir le restaurer ultérieurement. Vous trouverez applicationHost.config sous le répertoire inetsrv\, qui se trouve à son tour sous le répertoire système.
Remarque
Pour cela, vous devez être administrateur. consultez la puce précédente ci-dessus.
- Avant de commencer, assurez-vous que le fichier est dans un état propre. Pour cela, rétablissez les modifications que vous avez éventuellement apportées au fichier applicationHost.config lors des exercices précédents. (Si vous utilisez une image VPC, le moyen le plus simple de procéder consiste à redémarrer l’image sans enregistrer son état).
- Il est recommandé de désactiver les messages d’erreur HTTP conviviaux dans Internet Explorer (Outils>Options>Avancé) pour une résolution plus rapide des problèmes.
Étape 1 : Définir une nouvelle application
À l’aide d’un éditeur de texte comme le Bloc-notes, ouvrez le fichier ApplicationHost.config à l’emplacement suivant :
%windir%\system32\inetsrv\config\applicationHost.config
Accédez à la section
<sites>
, qui ressemble à celle-ci :<sites> <siteDefaults> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool"/> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> <application path="/"> <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" /> </application> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </site> </sites>
Vérifiez que le serveur web est en cours d’exécution et que vous pouvez accéder au site web par défaut. Pour cela, lancez le navigateur et demandez
http://localhost/
La demande doit retourner une page web. Si ce n’est pas le cas, démarrez le serveur IIS en tapant « net start w3svc » à partir de la zone de commande ou résolvez les problèmes à l’aide de la visionneuse du journal des événements Windows.
Dans le navigateur, demandez
http://localhost/
Cette demande ne retourne pas de page (vous voyez une page d’erreur), car le chemin virtuel n’est pas encore défini dans la configuration (il s’agit de la procédure suivante).
Dans le fichier ApplicationHost.config, ajoutez un élément
<application>
avec le chemin « /app » qui inclut un élément<virtualDirectory>
racine. Le répertoire virtuel racine est un répertoire virtuel dont le chemin est « / ». Pour le chemin physique du répertoire virtuel, spécifiezC:\tmp
(ou quelque chose de similaire que vous utiliserez par la suite).Lorsque vous avez terminé, les sections
<sites>
ressemblent à celles-ci :<sites> <siteDefaults> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool"/> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> <application path="/"> <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" /> </application> <application path="/app" > <virtualDirectory path="/" physicalPath="C:\tmp" /> </application> <logFile directory="C:\WINDOWS\System32\LogFiles" /> </site> </sites>
Vous venez de définir une nouvelle application dans le fichier de configuration.
Dans le navigateur, demandez
http://localhost/
Le serveur web retourne une page d’erreur, indiquant que l’exploration des répertoires n’est pas activée. Cela se produit car vous n’avez pas encore de contenu dans
c:\tmp
, si bien que le serveur gère la demande comme une demande de navigation dans le répertoire. Copiez iisstart.htm à partir du répertoire\inetpub\wwwroot
dansc:\tmp
et actualisez le navigateur. Vous voyez maintenant la page En cours de construction.
Étape 2 : Déverrouiller les sections de configuration
À l’aide d’un éditeur de texte comme le Bloc-notes, ouvrez applicationHost.config et recherchez le groupe de sections <authentication>.
Déplacez les sections <anonymousAuthentication> et
<windowsAuthentication>
depuis leur emplacement actuel dans le fichier vers une nouvelle balise d’emplacement située au bas du fichier qui comporte overrideMode="Allow", comme suit :<configuration> <system.webServer> <security> <authentication> <!-- cut the anonymousAuthentication and windowsAuthentication --> <!-- XML elements from this area in the file, and paste below --> </authentication> </security> </system.webServer> <location overrideMode="Allow"> <system.webServer> <security> <authentication> <!-- paste the 2 sections from above here --> </authentication> </security> </system.webServer> </location> </configuration>
Ces sections sont à présent remplaçables par des niveaux inférieurs de l’espace de noms, car elles se trouvent dans une balise d’emplacement qui spécifie overrideMode="Allow". Tous les fichiers web.config de niveau inférieur peuvent désormais remplacer ces paramètres.
Étape 3 : Remplacer les paramètres au niveau de l’application
À l’aide d’un éditeur de texte comme le Bloc-notes, créez un fichier texte dans le dossier d’application (par exemple,
c:\tmp
) nommé web.config.Dans le fichier web.config, créez un élément
<configuration>
et un élément<system.webServer>
en tant qu’enfant. Dans l’élément<system.webServer>
, créez un élément<security>
qui contient un élément<authentication>
.Entrez les paramètres pour désactiver l’authentification Windows et les schémas d’authentification anonyme, qui sont activés par défaut au niveau global.
Lorsque vous avez terminé, le fichier web.config ressemble à celui-ci :
<configuration> <system.webServer> <security> <authentication> <windowsAuthentication enabled="false" /> <anonymousAuthentication enabled="false" /> </authentication> </security> </system.webServer> </configuration>
Dans un navigateur, demandez
http://localhost/app
.Remarque
Vous n’êtes pas autorisé à voir la page, car vous avez désactivé toutes les méthodes d’authentification auprès de cette page dans votre fichier web.config.
Dans le navigateur, demandez
http://localhost/
et vérifiez que vous pouvez accéder à la page. La configuration dans le fichier web.config s’applique uniquement au niveau de l’application.Dans le fichier web.config, activez l’authentification de base en ajoutant un élément
<basicAuthentication>
avec son attribut enabled défini sur true.Lorsque vous avez terminé, le fichier web.config ressemble à celui-ci :
<configuration> <system.webServer> <security> <authentication> <windowsAuthentication enabled="false" /> <anonymousAuthentication enabled="false" /> <basicAuthentication enabled="true" /> </authentication> </security> </system.webServer> </configuration>
Redemandez
http://localhost/app
. Vous voyez une page d’erreur indiquant que certaines configurations sont verrouillées au niveau global et que les fichiers web.config essaient de les remplacer. Par conséquent, il s’agit d’une erreur de configuration. Pour résoudre ce problème, autorisez le remplacement de la section <basicAuthentication> au niveau global (applicationHost.config), comme vous l’avez fait pour les deux autres sections. Actualisez ensuite le navigateur.Vous allez maintenant être invité à entrer un nom d’utilisateur et un mot de passe, ce qui indique que l’authentification de base est en place.
Entrez le nom d’utilisateur et le mot de passe de l’utilisateur connecté, puis notez que la page s’affiche.
Si vous demandez
http://localhost/
, vous ne serez pas invité à entrer le nom d’utilisateur et le mot de passe, car les modifications apportées à la configuration que vous avez effectuées s’appliquent uniquement au niveau de l’application.Remarque
Le serveur et le navigateur mettent tous les deux en cache le jeton utilisateur. Si vous voulez démarrer ex nihilo et que vous ne voyez plus l’invite de nom d’utilisateur, fermez le navigateur et arrêtez le processus de travail IIS (ou exécutez « net stop /y http » à partir de la ligne de commande Windows, puis tapez « net start w3svc » pour redémarrer IIS).
Résumé
Ce document explique comment définir des applications et des répertoires virtuels dans le fichier de configuration maître, applicationHost.config. Il explique également comment déployer des fichiers de configuration propres à l’application qui contiennent des paramètres de serveur dans la section <system.webServer>
. Vous pouvez ajouter des paramètres au fichier web.config dans le groupe de sections <system.web>
, notamment des paramètres ASP.NET.
Une bonne pratique consiste à définir des listes de contrôle d’accès (ACL) sur le fichier web.config ou sur l’ensemble du répertoire de votre application afin que les utilisateurs non-administrateurs ne puissent pas accéder au fichier.