Exécution d’IIS Express sans privilèges administratifs

par Vaidy Gopalakrishnan

IIS Express a été conçu pour permettre l’exécution des tâches de développement et de test web les plus courantes sans privilèges administratifs. Cela est très utile dans les scénarios où les développeurs ne s’exécutent pas avec des droits administratifs sur leurs ordinateurs. Même pour les utilisateurs administratifs, cette fonctionnalité empêche la fenêtre contextuelle Contrôle de compte d’utilisateur (UAC) dans Windows Vista et Windows 7 d’interrompre du flux de travail.

Cet article explique la fonctionnalité d’IIS Express pour les utilisateurs standard et décrit les tâches limitées aux administrateurs.

Exécution de sites localement

Avec IIS Express, les utilisateurs standard peuvent exécuter des sites web localement à l’aide de ports non réservés (ports supérieurs à 1024). La liaison de site web par défaut pour IIS Express est http://localhost:8080. Par défaut, WebMatrix et Visual Studio 2010 SP1 Beta configurent également des sites web pour utiliser localhost et un port non réservé.

En revanche, les privilèges administratifs sont nécessaires pour traiter du contenu pour les requêtes externes ou à l’aide d’un port réservé tel que 80 ou 443.

Configuration de sites web et d’applications

IIS et IIS Express utilisent un fichier applicationhost.config qui contient des informations de configuration à l’échelle du serveur. Avec IIS Express, chaque utilisateur possède sa propre copie de applicationhost.config, ce qui signifie que l’utilisateur peut ajouter des sites, supprimer des sites, configurer des répertoires virtuels, et ainsi de suite sans privilèges spéciaux. IIS Express recherche un fichier applicationhost.config dans le dossier Documents de l’utilisateur (par exemple, %userprofile%\Documents\IISExpress\config sur Windows 7). IIS Express peut également être pointé vers un fichier applicationhost.config personnalisé à l’aide du commutateur de ligne de commande /config. Le résultat montre qu’il n’est pas nécessaire d’être administrateur pour utiliser IIS Express avec Visual Studio.

Étant donné qu’IIS utilise un fichier applicationhost.config à l’échelle de l’ordinateur dans lequel les utilisateurs standard ne peuvent pas écrire, les mêmes tâches sous IIS peuvent être effectuées uniquement par les administrateurs. (Étant donné qu’IIS est généralement utilisé sur les ordinateurs serveurs, il ne s’agit généralement pas d’une restriction du point de vue d’un développeur individuel.)

Démarrage et arrêt des sites

Avec IIS Express, un utilisateur standard peut démarrer et arrêter son serveur web à sa guise. Cela peut être fait à l’aide de WebMatrix et Visual Studio 2010 SP1 Beta, ou à l’aide de l’exécutable de commande iisexpress.exe. Une application de barre système Windows permet également aux utilisateurs de parcourir et d’arrêter des instances IIS Express.

Avec IIS, les utilisateurs ne peuvent pas lancer directement leur site web. Au lieu de cela, le service d’activation des processus de travail (WAS) est responsable de l’activation des sites web. Étant donné que WAS est un service système, seuls les administrateurs peuvent le démarrer ou l’arrêter.

Utilisation de SSL

La configuration de l’accès via le protocole SSL (Secure Sockets Layer) nécessite des privilèges administratifs sur IIS Express, comme sur IIS. Toutefois, le programme d’installation d’IIS Express effectue les tâches suivantes qui permettent aux utilisateurs standard d’utiliser SSL avec IIS Express :

  • Un certificat de serveur SSL auto-signé est automatiquement créé et installé dans le magasin d’ordinateurs local.
  • Il configure HTTP.SYS pour réserver des ports 44300 à 44399 pour SSL. Les requêtes SSL entrantes qui utilisent localhost et l’un des ports de la plage spécifiée sont automatiquement associés au certificat auto-signé.

(HTTP.SYS est un composant de système d’exploitation qui gère SSL pour IIS et IIS Express. Le programme d’installation est en mesure de configurer HTTP.SYS, car l’installation s’exécute sous des privilèges élevés.)

Par conséquent, l’utilisation de SSL pour tester un site web avec IIS Express est aussi simple que l’ajout d’une liaison comme celle-ci à l’élément de site dans applicationhost.config :

<binding protocol="https" bindingInformation="*:44300:localhost" />

Cela fonctionne uniquement pour le trafic local (demandes localhost) et pour la plage de ports spécifiée. Les privilèges d’administrateur sont nécessaires pour configurer un certificat SSL personnalisé ou exécuter SSL à l’aide d’un port en dehors de la plage spécifiée.

Résumé

IIS Express permet aux utilisateurs non administratifs d’effectuer les tâches suivantes :

  • Exécuter un site web localement et utiliser un numéro de port supérieur à 1024.
  • Ajouter, supprimer et modifier des sites web, des applications et des répertoires virtuels.
  • Démarrer et arrêter le serveur web.
  • Ajouter la prise en charge SSL pour tester un site web à l’aide d’un certificat SSL auto-signé préinstallé et d’un port compris entre 44300 et 44399.

Les privilèges administratifs sont nécessaires pour effectuer les tâches suivantes :

  • Utiliser un port réservé tel que 80 ou 443.
  • Traiter les demandes de trafic externe.
  • Configurer un certificat SSL personnalisé.
  • Exécuter SSL à l’aide d’un port en dehors de la plage de 44300 à 44399.