[ASP.NET] Windows 7, IIS 7.5, ApplicationPoolIdentity et autorisations
Dans les versions 6.0 et 7.0 de IIS (Internet Information Service) l’identité associée à un pool d’application web est automatiquement mappée à un compte local (NETWORK SERVICE). Ainsi, c’est sous cette identité que le worker process du serveur (w3wp.exe) s’exécute.
Dans la version 7.5 de IIS (Windows 7 et Windows Server 2008 R2), ce n’est plus le cas, puisque le worker process utilise directement le “ApplicationPoolIdentity” qui n’est rien d’autre qu’un compte de service managé (nouveauté sur les deux plateformes citées plus haut, voir Technet, en anglais) permettant une isolation des processus sans que l’administrateur ait à gérer les comptes lui même.
Ainsi, lors de vos déploiements de site web sous IIS 7.5 et notamment de la configuration d’une éventuelle base de données, il est normal que l’attribution de droit à NETWORK SERVICE sur la base ne règle pas les problème de connexion à celle-ci depuis ASP.NET. Il en va de même pour les autorisations sur le système de fichier.
Lorsque vous allez créer votre site web sous IIS 7.5, une ApplicationPoolIdentity sera automatiquement créée pour celui-ci, comme le montre la section Application Pools de la console de gestion IIS :
Chaque site en exécution aura donc un processus w3wp.exe lancé sous une identité différente :
Pour résoudre vos problèmes de droits éventuels, vous avez deux solutions :
- Accorder les droits au compte managé associé à votre pool d’application (IIS APPPOOL\Nom Du Pool)
- Forcer votre pool à s’exécuter sous le compte NETWORK SERVICE comme sous Windows Vista et Windows Server 2008
Concernant la deuxième étape, rendez-vous dans la console de gestion IIS (inetmgr.exe) dans la section Application Pools, d’éditer les paramètres avancés du pool souhaité et de lier son identité au compte NETWORK SERVICE :
Et voilà le résultat :
A bientôt 