Partager via


Concepts de base des opérations de l'utilisateur du .NET Framework

Mise à jour : novembre 2007

Le .NET Framework fournit une implémentation de sécurité basée sur les rôles dans l'espace de noms System.Security.Principal que vous pouvez utiliser pour autoriser et authentifier les utilisateurs de votre application. Cette rubrique décrit comment utiliser l'autorisation d'application dans le .NET Framework et créer des objets IIdentity et IPrincipal pour représenter les utilisateurs.

Un IIdentity encapsule un utilisateur authentifié. Un IPrincipal est une combinaison de l'identité de l'utilisateur et des rôles qu'il a. Vous pouvez utiliser les classes Identity et Principal prédéfinies dans l'espace de noms System.Security.Principal ou ajouter une authentification personnalisée en créant des classes qui implémentent les interfaces.

Pour utiliser ces interfaces, vous devez qualifier pleinement les noms d'interface ou importer les espaces de noms appropriés en incluant les instructions Imports au début du fichier de code source affecté. Pour plus d'informations, consultez Imports, instruction (espace de noms et type .NET).

Utilisation de la sécurité basée sur les rôles dans les applications .NET Framework

Chaque thread d'application peut avoir un objet Principal associé (accessible via la propriété CurrentPrincipal) qui représente le contexte de sécurité de l'utilisateur pour lequel le code s'exécute. Un objet Principal encapsule l'objet (ou identité) du contexte de sécurité de l'utilisateur. L'utilisation de deux objets permet une séparation de l'authentification (dans l'objet Identity) et de l'autorisation (dans l'entité de sécurité).

Un objet Identity doit implémenter l'interface IIdentity. Un objet Identity représente un utilisateur particulier et expose les propriétés suivantes requises par l'interface IIdentity : Name, IsAuthenticated et AuthenticationType. Les objets Identity ont en général des membres privés supplémentaires qui effectuent l'authentification utilisateur.

Un objet Principal doit implémenter l'interface IPrincipal. Un objet Principal encapsule le contexte de sécurité de l'utilisateur en exposant les membres suivants requis par l'interface IPrincipal : la méthode IsInRole qui exécute l'autorisation et la propriété Identity qui fournit l'accès à l'objet Identity de l'utilisateur.

Utilisation des identités

Le .NET Framework fournit quatre classes qui implémentent l'interface IIdentity :

Chaque classe vous permet d'utiliser différents types d'identités utilisateur. Pour accéder à l'objet WindowsIdentity actuel d'une application qui utilise l'authentification Windows, utilisez la méthode GetCurrent statique de la classe WindowsIdentity. Vous pouvez également définir l'entité de sécurité du thread actuel en appelant la méthode My.User.InitializeWithWindowsUser.

Vous pouvez également créer des classes Identity personnalisées en implémentant l'interface IIdentity dans votre classe personnalisée. Pour plus d'informations sur la création d'identités personnalisées, consultez Procédure pas à pas : implémentation d'une authentification et d'une autorisation personnalisées.

Utilisation des entités de sécurité

Le .NET Framework fournit l'interface IPrincipal pour lier les rôles et les identités d'utilisateur. Si votre application effectue l'autorisation, elle doit utiliser un objet qui implémente IPrincipal. Par exemple, les classes WindowsIdentity et GenericIdentity fournissent des implémentations intégrées de IPrincipal. Vous pouvez également créer vos propres classes Principal personnalisées selon IPrincipal.

Vous pouvez lier le thread actuel à un objet IPrincipal en assignant l'objet à la propriété CurrentPrincipal du thread ou à la propriété My.User.CurrentPrincipal. Vous pouvez ensuite effectuer une vérification d'autorisation en testant si l'utilisateur est membre d'un rôle particulier. Pour ce faire, utilisez la méthode IsInRole de l'entité de sécurité.

Les applications ASP.NET gèrent les objets IPrincipal différemment par rapport aux autres applications .NET Framework. ASP.NET crée l'apparence d'une session sur le protocole HTTP sans état. Dans le cadre de cette session, l'objet IPrincipal qui représente l'utilisateur est disponible dans la propriété User de l'objet HttpContext pour tout le code qui exécute la demande de l'utilisateur. Le Common Language Runtime met automatiquement à jour CurrentPrincipal avec la valeur User après l'événement OnAuthenticate du fichier Global.asax. Les applications ASP.NET utilisent souvent la propriété User pour effectuer des vérifications d'autorisation.

Remarque :

La modification manuelle de User met automatiquement à jour la propriété CurrentPrincipal pour tous les threads qui s'exécutent dans le même contexte HTTP. Toutefois, la modification de CurrentPrincipal n'affecte pas la propriété User. Elle n'affecte que le thread choisi pour le reste de la demande.

Dans les applications ASP.NET, la propriété My.User.CurrentPrincipal met à jour la propriété User.

Pour plus d'informations sur la création de types IPrincipal personnalisés, consultez Procédure pas à pas : implémentation d'une authentification et d'une autorisation personnalisées.

Octroi d'autorisations pour utiliser les objets IIdentity et IPrincipal

Vous devez agir avec précaution lorsque vous accordez des autorisations pour utiliser les objets IIdentity, parce que ces objets rendent disponibles des informations sensibles relatives à l'utilisateur. Vous devez protéger l'objet IPrincipal actuel de l'application contre les modifications parce que la fonction d'autorisation de l'application repose sur son entité de sécurité actuelle.

Le .NET Framework fournit cette protection en exigeant que ces opérations aient une autorisation de sécurité d'accès de code. Accordez l'autorisation SecurityPermissionAttribute.ControlPrincipal aux applications qui doivent manipuler ces objets en utilisant Outil Code Access Security Policy Tool (Caspol.exe).

Par défaut, toutes les applications installées localement ont cette autorisation parce qu'elles s'exécutent sous le jeu d'autorisations FullTrust.

L'exécution des méthodes suivantes requiert l'autorisation ControlPrincipal :

Voir aussi

Tâches

Procédure pas à pas : implémentation d'une authentification et d'une autorisation personnalisées

Référence

My.User, objet

Autres ressources

Authentification et autorisation dans le .NET Framework avec Visual Basic