Partager via


Concepts de base des opérations de l'utilisateur du .NET Framework (Visual Basic)

.NET Framework offre une implémentation de la sécurité basée sur les rôles dans l'espace de noms System.Security.Principal, que vous pouvez utiliser pour authentifier les utilisateurs et leur accorder des autorisations dans votre application. Cette rubrique explique comment utiliser les autorisations d'application dans .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 suivantesIIdentity en fonction des spécifications de l'interface : 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 suivantsIPrincipal selon les exigences de l'interface : IsInRolela méthode, qui exécute l'autorisation et laIdentity propriété, qui permet d'accéder à l'objet de l'identité de l'utilisateur.

Utilisation des identités

.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'objet Principal du thread actuel en appelant la méthode 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 (Visual Basic).

Utilisation des entités de sécurité

.NET Framework fournit l'interface IPrincipal pour lier les identités et les rôles d'utilisateurs. 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 cet objet à la propriété CurrentPrincipal ou CurrentPrincipal du thread. 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.

Notes

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é 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 (Visual Basic).

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.

.NET Framework fournit cette protection en exigeant que ces opérations disposent des autorisations de sécurité d'accès du code. Accordez l'autorisation SecurityPermissionAttribute.ControlPrincipal aux applications qui doivent manipuler ces objets en utilisant Caspol.exe (outil Stratégie de sécurité d'accès du code).

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 (Visual Basic)

Référence

User

Autres ressources

Authentification et autorisation dans le .NET Framework avec Visual Basic