Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article fournit une introduction à ASP.NET sécurité, il fait référence aux espaces de noms de bibliothèque de classes Microsoft .NET Framework suivants :
System.Web.Security
System.Web.Principal
Version du produit d’origine : ASP.NET
Numéro de la base de connaissances d’origine : 306590
Résumé
ASP.NET vous donne plus de contrôle pour implémenter la sécurité pour votre application. ASP.NET sécurité fonctionne conjointement avec la sécurité iis (Internet Information Services) et inclut des services d’authentification et d’autorisation pour implémenter le modèle de sécurité ASP.NET. ASP.NET inclut également une fonctionnalité de sécurité basée sur les rôles que vous pouvez implémenter pour les comptes d’utilisateur Windows et non-Windows.
Cet article est divisé en sections suivantes :
- Flux de sécurité avec une demande
- Paramètres de configuration associés
- Authentification
- Autorisation
- Sécurité basée sur les rôles
Flux de sécurité avec une demande
Les étapes suivantes décrivent la séquence d’événements lorsqu’un client effectue une requête :
- Un client demande une page .aspx qui réside sur un serveur IIS.
- Les informations d’identification du client sont transmises à IIS.
- IIS authentifie le client et transfère le jeton authentifié avec la demande du client au processus de travail ASP.NET.
- En fonction du jeton authentifié à partir d’IIS et des paramètres de configuration de l’application web, ASP.NET détermine s’il faut emprunter l’identité d’un utilisateur sur le thread qui traite la demande. Dans une différence distincte entre les pages Active Server (ASP) et les ASP.NET, ASP.NET n’emprunte plus l’identité de l’utilisateur authentifié par défaut. Pour activer l’emprunt d’identité, vous devez définir l’attribut d’emprunt d’identité de la section identité dans le fichier Web.config sur true.
Pour plus d’informations sur le flux de sécurité, consultez ASP.NET Flux de données.
Pour plus d’informations sur l’emprunt d’identité dans ASP.NET, consultez Comment implémenter l’emprunt d’identité dans une application ASP.NET.
Paramètres de configuration associés
IIS gère les paramètres de configuration liés à la sécurité dans la métabase IIS. Toutefois, ASP.NET conserve les paramètres de configuration de sécurité (et autres) dans les fichiers de configuration XML (Extensible Markup Language). Bien que cela simplifie généralement le déploiement de votre application du point de vue de la sécurité, le modèle de sécurité que votre application adopte nécessite la configuration correcte de la métabase IIS et de votre application ASP.NET via son fichier de configuration (Web.config).
Les sections de configuration suivantes sont liées à la sécurité ASP.NET :
Authentification
L’authentification est le processus par lequel vous obtenez des informations d’identification telles que le nom et le mot de passe de l’utilisateur et validez ces informations d’identification par rapport à une autorité.
ASP.NET fournit quatre fournisseurs d’authentification :
- Authentification par formulaire
- Authentification Windows
- Authentification passport
- Authentification par défaut
authentification par formulaires
L’authentification par formulaire fait référence à un système dans lequel les requêtes non authentifiées sont redirigées vers un formulaire HTML (Hypertext Markup Language) dans lequel les utilisateurs tapez leurs informations d’identification. Une fois que l’utilisateur fournit des informations d’identification et envoie le formulaire, l’application authentifie la demande et le système émet un ticket d’autorisation sous la forme d’un cookie. Ce cookie contient les informations d’identification ou une clé pour réactiver l’identité. Les demandes suivantes du navigateur incluent automatiquement le cookie.
Pour plus d’informations sur l’authentification par formulaire, consultez Le fournisseur d’authentification par formulaire.
Pour plus d’informations sur l’authentification par formulaire dans ASP.NET, consultez Comment implémenter l’authentification basée sur des formulaires dans votre application ASP.NET à l’aide de C#.NET.
Authentification Windows
Dans Authentification Windows, IIS effectue l’authentification et le jeton authentifié est transféré au processus de travail ASP.NET. L’avantage d’utiliser Authentification Windows est qu’il nécessite un codage minimal. Vous pouvez utiliser Authentification Windows pour emprunter l’identité du compte d’utilisateur Windows que IIS authentifie avant de remettre la demande à ASP.NET.
Pour plus d’informations sur Authentification Windows, consultez le fournisseur WindowsAuthenticationModule.
Authentification passport
L’authentification Passport est un service d’authentification centralisé, fourni par Microsoft, qui offre des services de connexion unique et de profil principal pour les sites membres. En règle générale, l’authentification Passport est utilisée lorsque vous avez besoin d’une fonctionnalité de connexion unique sur plusieurs domaines.
Pour plus d’informations sur l’authentification Passport, consultez Le fournisseur d’authentification Passport.
Authentification par défaut
L’authentification par défaut est utilisée lorsque vous ne souhaitez aucune sécurité sur votre application web ; l’accès anonyme est requis pour ce fournisseur de sécurité. Parmi tous les fournisseurs d’authentification, l’authentification par défaut fournit des performances maximales pour votre application. Ce fournisseur d’authentification est également utilisé lorsque vous utilisez votre propre module de sécurité personnalisé.
Autorisation
L’autorisation est le processus qui vérifie si l’utilisateur authentifié a accès aux ressources demandées.
ASP.NET propose les fournisseurs d’autorisation suivants :
Autorisation de fichier
La FileAuthorizationModule
classe effectue l’autorisation de fichier et est active lorsque vous utilisez Authentification Windows. FileAuthorizationModule
est chargé d’effectuer des vérifications sur les listes de contrôle d’accès Windows (ACL) pour déterminer si un utilisateur doit avoir accès.
Autorisation d’URL
La UrlAuthorizationModule
classe effectue l’autorisation UNIFORM Resource Locator (URL), qui contrôle l’autorisation en fonction de l’espace de noms URI (Uniform Resource Identifier). Les espaces de noms d’URI peuvent être différents des chemins d’accès au dossier physique et aux fichiers utilisés par les autorisations NTFS.
UrlAuthorizationModule
implémente des assertions d’autorisation positives et négatives ; autrement dit, vous pouvez utiliser le module pour autoriser ou refuser de manière sélective l’accès à des parties arbitraires de l’espace de noms d’URI pour les utilisateurs, les rôles (tels que le gestionnaire, les testeurs et les administrateurs) et les verbes (tels que GET
et POST
).
Pour plus d’informations sur l’autorisation dans ASP.NET, consultez ASP.NET Autorisation.
Sécurité basée sur les rôles
La sécurité basée sur les rôles dans ASP.NET est similaire à la sécurité basée sur les rôles que Microsoft COM+ et Microsoft Transaction Server (MTS) utilisent, bien qu’il existe des différences importantes. La sécurité basée sur les rôles dans ASP.NET n’est pas limitée aux comptes et groupes Windows. Par exemple, si Authentification Windows et l’emprunt d’identité sont activés, l’identité de l’utilisateur est une identité Windows (User.Identity.Name = "Domain\username"
). Vous pouvez vérifier les identités d’appartenance à des rôles spécifiques et restreindre l’accès en conséquence. Par exemple :
Code .NET Visual Basic
If User.IsInRole("BUILTIN\Administrators") Then
Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
Response.Write("You are a User")
Else
Response.Write("Invalid user")
End if
Code .NET Visual C#
if ( User.IsInRole("BUILTIN\\Administrators"))
Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
Response.Write("You are a User");
else
Response.Write("Invalid user");
Si vous utilisez l’authentification par formulaire, les rôles ne sont pas attribués à l’utilisateur authentifié ; vous devez effectuer cette opération par programmation. Pour attribuer des rôles à l’utilisateur authentifié, utilisez l’événement OnAuthenticate
du module d’authentification (qui est le module d’authentification par formulaire dans cet exemple) pour créer un GenericPrincipal
objet et l’affecter à la propriété Utilisateur de l’objet HttpContext
. Le code suivant illustre ceci :
Code .NET Visual Basic
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
If (Not(HttpContext.Current.User Is Nothing)) Then
If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
Dim myRoles(3) As String
myRoles(0)= "managers"
myRoles(1)= "testers"
myRoles(2)= "developers"
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles)
End If
End If
End Sub
Code .NET Visual C#
public void Application_AuthenticateRequest(Object s, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
{
System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
String[] myRoles = new String[3];
myRoles[0]= "managers";
myRoles[1]= "testers";
myRoles[2]= "developers";
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
}
}
}
Pour vérifier si l’utilisateur se trouve dans un rôle spécifique et restreindre l’accès en conséquence, utilisez le code suivant (ou similaire) dans vos pages .aspx :
Code .NET Visual Basic
If User.IsInRole("managers") Then
Response.Write("You are a Manager")
Else If User.IsInRole("testers") Then
Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
Response.Write("You are a Developer")
End if
Code .NET Visual C#
if (User.IsInRole("managers"))
Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
Response.Write("You are a Developer");
Pour plus d’informations sur la sécurité basée sur les rôles, consultez Sécurité basée sur les rôles.
References
Pour plus d’informations générales sur ASP.NET, reportez-vous au groupe de news suivant :
Pour plus d’informations, consultez l’article ou les livres suivants :
PRB : Request.ServerVariables(« LOGON_USER ») retourne une chaîne vide dans ASP.NET
Reilly, Douglas J. Conception d’applications Microsoft ASP.NET. Microsoft Press, 2001.
Esposito, Dino. Création de solutions web avec ASP.NET et ADO.NET. Microsoft Press, 2001.