Limitation de l'accès aux sites Web ASP.NET

Mise à jour : novembre 2007

La limitation de l'accès à une application est en général divisée en deux rubriques : l'authentification qui correspond à la manière dont une application identifie qui vous êtes et l'autorisation qui correspond à la manière dont une application identifie ce que vous êtes autorisé à faire. Cette rubrique fournit une vue d'ensemble de l'authentification et de l'autorisation dans les applications Web ASP.NET. Pour plus d'informations, consultez Sécurité des applications Web ASP.NET.

Authentification des utilisateurs

Les applications ASP.NET offrent plusieurs options différentes pour l'authentification des utilisateurs. Pour les applications en lecture seule qui peuvent être affichées par n'importe qui, utilisez l'authentification anonyme. Pour obtenir un accès plus restreint à une application, vous devez utiliser une certaine forme d'authentification pour identifier les utilisateurs. Deux identités doivent être considérées lors de l'authentification des utilisateurs pour votre application ASP.NET : l'identité de l'application qui est utilisée pour accéder aux ressources Windows et l'identité de l'utilisateur ASP.NET qui est utilisée pour identifier un utilisateur d'ASP.NET.

Votre application peut s'exécuter sans une identité de l'utilisateur ASP.NET, mais vous aurez toujours une identité de l'application Windows. Pour vous aider à sécuriser votre application, vous devez restreindre l'identité Windows de l'application aux ressources requises, telles que l'accès aux fichiers et aux bases de données.

Identité de l'application ASP.NET

Lorsqu'une page ASP.NET s'exécute, le serveur doit avoir un contexte de sécurité, ou identité, pour le processus qui exécute le code ASP.NET. Cette identité est utilisée lors de la sécurisation de ressources à l'aide de la sécurité intégrée de Windows, telle que la protection des fichiers à l'aide du système de fichiers NTFS ou des ressources réseau.

Par exemple, les fichiers qui contiennent le code d'application stocké dans le sous-répertoire App_Code d'une application doivent uniquement être lus par l'identité de l'application ASP.NET. Par conséquent, les paramètres de sécurité pour les fichiers dans le répertoire App_Code peuvent être restreints afin que l'identité de l'application ASP.NET ait uniquement un accès en lecture seule. Une autre utilisation courante de l'identité Windows de l'application ASP.NET est en tant qu'identité d'une connexion à un SQL Server utilisant la sécurité intégrée. Pour plus d'informations, consultez Listes de contrôle d'accès requis par ASP.NET et Comment : accéder à SQL Server à l'aide de la sécurité intégrée de Windows.

L'identité d'une application ASP.NET est déterminée par plusieurs facteurs. Par défaut, les pages ASP.NET s'exécutent avec l'identité Windows du service qui traite les pages ASP.NET sur le serveur Web. Sur un ordinateur qui exécute Windows Server 2003, cette identité est l'identité du pool d'applications dont l'application ASP.NET fait partie (par défaut, le compte SERVICE RÉSEAU). Sur les ordinateurs qui exécutent Windows 2000 et Windows XP Professionnel, l'identité est le compte ASPNET local qui est créé lorsque le .NET Framework est installé. Cette identité peut être configurée sur une identité différente si vous le souhaitez. Pour plus d'informations, consultez Configuration de l'identité de processus ASP.NET.

Vous pouvez modifier l'identité Windows que votre page ASP.NET exécute en utilisant l'élément identity de la section de configuration system.web. L'élément identity peut être utilisé pour ordonner à ASP.NET d'emprunter l'identité d'un ID d'utilisateur Windows. L'emprunt d'identité Windows signifie que les pages ASP.NET pour l'application s'exécuteront en tant que cette identité Windows. Vous pouvez spécifier un nom d'utilisateur et un mot de passe dont l'identité doit être empruntée. Vous pouvez également activer l'emprunt d'identité et ASP.NET s'exécutera de l'une de deux manières : une identité anonyme spécifiée par IIS ou l'identité de navigateur authentifiée telle que déterminée par IIS (par exemple, l'authentification anonyme, l'authentification intégrée de Windows (NTLM) etc.). Pour plus d'informations, consultez Emprunt d'identité ASP.NET.

Si vous empruntez une identité Windows, vous pouvez exécuter du code qui rétablit l'identité d'origine du processus au lieu de l'ID d'utilisateur emprunté. Pour cette raison, dans les environnements dans lesquels vous devez conserver une application séparée des autres, vous devriez isoler les applications dans des pools d'applications séparés sur des ordinateurs qui exécutent Windows Server 2003. Chaque pool d'applications doit être configuré avec une identité Windows unique.

Vous pouvez facilement déterminer l'identité Windows du thread de système d'exploitation que votre page ASP.NET exécute à l'aide de la propriété Name de WindowsIdentity retournée par la méthode GetCurrent comme indiqué dans l'exemple de code suivant.

<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>

Utilisateur ASP.NET

L'identité de l'utilisateur ASP.NET est utilisée pour accéder aux ressources spécifiques à ASP.NET. Par exemple, vous pouvez identifier une partie de votre application qui est uniquement disponible pour certains utilisateurs, pendant que d'autres parties de votre application sont disponibles pour tous les utilisateurs.

L'utilisateur ASP.NET est déterminé par l'élément authentication de la section system.web du fichier Web.config pour votre application. Vous avez plusieurs options pour authentifier l'identité ASP.NET pour votre application. Vous pouvez utiliser le nom d'utilisateur Windows qui est déterminé par IIS, par l'authentification par formulaire ASP.NET, par l'authentification Passport ou par un schéma d'authentification personnalisé. L'identité ASP.NET n'est pas accessible à l'aide de la propriété User du HttpContext actuel. Pour plus d'informations, consultez Authentification ASP.NET.

Si vous utilisez l'authentification par formulaire ASP.NET ou une solution d'authentification personnalisée pour fournir l'identité ASP.NET, vous pouvez utiliser l'appartenance d'ASP.NET pour fournir un magasin de données utilisateur et une fonctionnalité de gestion de l'utilisateur. Pour plus d'informations, consultez Gestion des utilisateurs à l'aide de l'appartenance.

Autorisation d'utilisateurs

L'autorisation implique la restriction de l'accès utilisateur aux ressources requises uniquement. Cela inclut la restriction de l'accès aux fichiers, bases de données et parties de votre application requis uniquement. De plus, cela inclut l'utilisation de la sécurité d'accès du code pour restreindre l'accès au code.

Vous pouvez restreindre l'accès aux fichiers à l'aide des listes de contrôle d'accès NTFS et le FileAuthorizationModule. Pour plus d'informations, consultez Autorisation ASP.NET et Listes de contrôle d'accès requis par ASP.NET.

Vous pouvez restreindre l'accès aux parties de votre application en utilisant UrlAuthorizationModule et la gestion des rôles ASP.NET. Pour plus d'informations, consultez Autorisation ASP.NET et Gestion de l'autorisation à l'aide de rôles.

Voir aussi

Concepts

Sécurité des applications Web au moment de l'exécution