Partager via


Architecture de sécurité ASP.NET

Mise à jour : novembre 2007

Cette section fournit une vue d'ensemble de l'infrastructure de sécurité d'ASP.NET. L'illustration ci-dessous montre les relations entre les systèmes de sécurité dans ASP.NET.

Architecture ASP.NET

Comme le montre l'illustration, tous les clients Web communiquent avec les applications ASP.NET via Microsoft Internet Information Services (IIS). IIS authentifie la demande si besoin est, puis recherche la ressource demandée (application ASP.NET, par exemple). Si le client est autorisé, la ressource est rendue disponible.

Lorsqu'une application ASP.NET est en cours d'exécution, elle peut utiliser les fonctionnalités de sécurité ASP.NET intégrées. De plus, une application ASP.NET peut utiliser les fonctionnalités de sécurité du .NET Framework. Pour plus d'informations, consultez Concepts fondamentaux sur la sécurité.

Intégration de l'authentification ASP.NET avec IIS

Outre le fait de s'appuyer sur les fonctions d'authentification d'IIS, vous pouvez exécuter l'authentification dans ASP.NET. En ce qui concerne cette dernière, il importe de bien comprendre l'interaction avec les services d'authentification IIS.

IIS suppose qu'un ensemble d'informations d'identification est mappé à un compte Microsoft Windows NT et que ces informations doivent être utilisées pour authentifier un utilisateur. Trois sortes d'authentification existent dans IIS 5.0 et IIS 6.0 : authentification de base, Digest et sécurité intégrée Windows (NTLM ou Kerberos). Vous pouvez sélectionner le type d'authentification à utiliser dans les services d'administration IIS. Pour plus d'informations sur l'authentification IIS, consultez la documentation IIS.

Si les utilisateurs demandent une URL mappée avec une application ASP.NET, la demande et les informations d'authentification sont transmises à l'application. ASP.NET permet l'authentification par formulaire. L'authentification par formulaire est un système par lequel les requêtes non authentifiées sont redirigées vers une page Web ASP.NET que vous créez. L'utilisateur fournit les informations d'identification et envoie la page. Si votre application authentifie la demande, le système publie un ticket d'authentification dans un cookie qui contient les informations d'identification ou une clé permettant de réacquérir l'identité. Les demandes suivantes incluent un ticket d'authentification avec la demande.

Remarque :

L'appartenance d'ASP.NET et les contrôles de connexion ASP.NET fonctionnent implicitement avec l'authentification par formulaire.

Paramètres de sécurité des fichiers de configuration ASP.NET

Les paramètres de sécurité ASP.NET sont configurés dans les fichiers Machine.config et Web.config. Comme pour les autres informations de configuration, les paramètres de base et les paramètres par défaut sont établis dans le fichier Machine.config du sous-répertoire Config de l'installation .NET Framework. Vous pouvez établir des paramètres spécifiques au site et des paramètres spécifiques à l'application (y compris la substitution de paramètres du fichier Machine.config) dans les fichiers Web.config des répertoires racine de l'application et du site Web. Les sous-répertoires héritent des paramètres d'un répertoire sauf si un fichier Web.config dans le sous-répertoire se substitue aux paramètres. Pour obtenir un exemple de la façon dont le système de configuration hiérarchique fonctionne pour la sécurité, consultez configSections, élément (Schéma des paramètres généraux).

Il existe trois sous-sections majeures d'un fichier Web.config : authentication, authorization et identity. Les valeurs de chaque élément de sécurité sont généralement définies dans le fichier Machine.config et substituées comme requis dans le fichier Web.config du niveau application. Tous les sous-répertoires héritent automatiquement de ces paramètres. Toutefois, les sous-répertoires peuvent avoir leurs propres fichiers de configuration substituant les paramètres hérités.

Remarque :

La configuration ASP.NET s'applique uniquement aux ressources ASP.NET, à savoir celles inscrites pour être gérées dans IIS par l'extension Aspnet_isapi.dll. La configuration ASP.NET ne peut pas fournir d'autorisation pour les ressources non traitées par ASP.NET. Par conséquent, les types de fichiers .txt, .htm, .html, .gif, .jpg, .jpeg, .asp et autres sont accessibles par tous les utilisateurs (soumis aux autorisations IIS). Par exemple, même si l'accès aux ressources ASP.NET d'un répertoire peut être limité par un fichier Web.config, tous les utilisateurs peuvent toujours afficher les fichiers qui se trouvent dans ce répertoire si la fonction d'exploration est activée et qu'aucune autre restriction ne s'applique. Vous pouvez placer ces types de fichiers sous la sécurité ASP.NET en mappant explicitement ces extensions avec l'extension Aspnet_isapi.dll à l'aide de l'outil d'administration IIS. Cependant, le traitement de ces types de fichiers via ASP.NET peut affecter les performances du site Web.

Vous pouvez utiliser l'élément de configuration location pour spécifier un fichier ou un répertoire particulier auquel les paramètres doivent s'appliquer. Pour plus d'informations, consultez configSections, élément (Schéma des paramètres généraux) et Configuration de fichiers et de sous-répertoires spécifiques. Pour plus d'informations sur la configuration ASP.NET en général, consultez Vue d'ensemble de la configuration ASP.NET.

L'exemple suivant illustre la syntaxe des sections de sécurité d'un fichier de configuration:

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Les paramètres par défaut de ces éléments sont indiqués dans le tableau suivant.

Valeur par défaut

Description

<allow roles="" />

Chaîne vide qui indique que tous les rôles sont autorisés par défaut.

<allow users="*" />

Chaîne vide qui indique que l'accès (aucune authentification n'est requise) est autorisé à tous les utilisateurs.

<authentication mode="Windows" />

Type d'authentification qui détermine la source de la valeur User en cours. Le paramètre par défaut est Windows.

<credentials passwordFormat="SHA1" />

Algorithme de hachage utilisé pour les mots de passe. La valeur par défaut est SHA1.

<deny roles="" />

Chaîne vide qui indique qu'aucun rôle n'est refusé par défaut.

<deny users="" />

Chaîne vide qui indique qu'aucun utilisateur n'est refusé par défaut.

<forms loginUrl="logon.aspx" />

URL vers laquelle la demande est dirigée si vous définissez le mode d'authentification avec la valeur Forms et si la demande ne possède pas de ticket d'authentification valide.

<forms name=".ASPXAUTH" />

Nom sous lequel le cookie d'authentification par formulaire est stocké sur l'ordinateur de l'utilisateur.

<forms path="/" />

Chemin d'accès auquel l'authentification par formulaire s'applique. La valeur par défaut est tous les chemins d'accès depuis la racine de l'application.

<forms protection="All" />

Sécurité appliquée au ticket d'authentification par formulaire. Les valeurs possibles incluent All, None, Encryption et Validation.

<forms timeout="30" />

Délai d'attente en minutes avant que le ticket d'authentification par formulaire n'expire et que les utilisateurs ne doivent s'authentifier à nouveau.

<forms requireSSL="false" />

Valeur booléenne qui indique si une connexion SSL est requise pour transmettre le cookie d'authentification.

<forms slidingExpiration="true" />

Valeur booléenne indiquant si l'expiration décalée est activée. Pour plus d'informations, consultez la propriété SlidingExpiration.

<identity impersonate="false" />

Valeur booléenne indiquant si l'emprunt d'identité est désactivé. Pour plus d'informations, consultez Emprunt d'identité ASP.NET.

<identity userName="" />

Chaîne vide qui indique qu'aucune identité d'utilisateur n'est spécifiée par défaut.

<identity password="" />

Chaîne vide qui indique qu'aucun mot de passe pour l'identité de l'utilisateur n'est spécifié par défaut.

<trust level="Full" originUrl="" />

Stratégie de sécurité qui s'appliquera à l'application.

<trustLevel name="Full" policyFile="internal"/>

Fichier de stratégie par défaut pour le niveau de confiance totale.

<trustLevel name="High" policyFile="web_hightrust.config"/>

Fichier de stratégie par défaut pour le niveau de confiance élevé.

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

Fichier de stratégie par défaut pour le niveau de confiance moyenne.

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

Fichier de stratégie par défaut pour le niveau de confiance basse.

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

Fichier de stratégie par défaut pour le niveau de confiance minimale.

Voir aussi

Concepts

Vue d'ensemble de la configuration ASP.NET

Autres ressources

Sécurisation de sites Web ASP.NET

Concepts fondamentaux sur la sécurité

Fournisseur d'authentification par formulaire