PrincipalPermissionAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Attention
Code Access Security is not supported or honored by the runtime.
Permet d’appliquer les actions de sécurité de PrincipalPermission au code à l’aide de la sécurité déclarative. Cette classe ne peut pas être héritée.
public ref class PrincipalPermissionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Serializable]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
Public NotInheritable Class PrincipalPermissionAttribute
Inherits CodeAccessSecurityAttribute
- Héritage
- Attributs
Exemples
L’exemple suivant montre comment la PrincipalPermissionAttribute classe est utilisée de manière déclarative pour exiger que l’utilisateur actuel soit administrateur.
Remarque
Dans Windows Vista, le contrôle de compte d'utilisateur détermine les privilèges d'un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, deux jetons d'accès au moment de l'exécution vous sont assignés : un jeton d'accès utilisateur standard et un jeton d'accès administrateur. Par défaut, vous êtes dans le rôle d'utilisateur standard. Pour exécuter le code nécessitant que vous soyez administrateur, vous devez d'abord élever vos privilèges d'utilisateur standard à administrateur. Vous pouvez effectuer cela au démarrage d'une application en cliquant avec le bouton droit sur l'icône de l'application et en indiquant que vous voulez l'exécuter en tant qu'administrateur.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
[PrincipalPermission(SecurityAction::Demand, Role = "Administrators")]
void CheckAdministrator()
{
Console::WriteLine("User is an administrator.");
}
int main(array<System::String ^> ^args)
{
try
{
// Must set PrincipalPolicy to WindowsPrincipal
AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
// Check using declarative security.
CheckAdministrator();
// Check using Imperative security.
System::String^ null;
PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
principalPerm->Demand();
Console::WriteLine("Demand succeeded");
}
catch (Exception ^e)
{
Console::WriteLine(e->Message);
}
return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
class SecurityPrincipalDemo
{
public static void Main()
{
try
{
// PrincipalPolicy must be set to WindowsPrincipal to check roles.
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
// Check using the PrincipalPermissionAttribute
CheckAdministrator();
// Check using PrincipalPermission class.
PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
principalPerm.Demand();
Console.WriteLine("Demand succeeded.");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void CheckAdministrator()
{
Console.WriteLine("User is an administrator");
}
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Class SecurityPrincipalDemo
Public Shared Sub Main()
Try
' PrincipalPolicy must be set to WindowsPrincipal to check roles.
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
' Check using the PrincipalPermissionAttribute
CheckAdministrator()
' Check using PrincipalPermission class.
Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
principalPerm.Demand()
Console.WriteLine("Demand succeeded.")
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
<PrincipalPermission(SecurityAction.Demand, Role:="Administrators")> _
Shared Sub CheckAdministrator()
Console.WriteLine("User is an administrator")
End Sub
End Class
Remarques
Attention
La sécurité d’accès du code (CAS) a été déconseillée dans toutes les versions du .NET Framework et de .NET. Les versions récentes de .NET ne respectent pas les annotations CAS et produisent des erreurs si les API liées à CAS sont utilisées. Les développeurs doivent chercher d’autres moyens pour accomplir les tâches liées à la sécurité.
PrincipalPermissionAttribute peut être utilisé pour exiger de manière déclarative que les utilisateurs exécutant votre code appartiennent à un rôle spécifié ou aient été authentifiés. L’utilisation de Unrestricted crée un PrincipalPermission avec Authenticated défini sur true
et Name et défini Role sur null
.
L’étendue de la déclaration autorisée dépend du SecurityAction qui est utilisé. PrincipalPermissionAttribute ne peut pas être appliqué au niveau de l’assembly.
Les informations de sécurité déclarées par un attribut de sécurité sont stockées dans les métadonnées de la cible d’attribut et sont accessibles par le système au moment de l’exécution. Les attributs de sécurité sont utilisés uniquement pour la sécurité déclarative. Pour une sécurité impérative, utilisez la classe d’autorisation correspondante.
Important
Avant d’utiliser cette classe pour demander l’autorisation du principal, vous devez définir la stratégie de principal du domaine d’application actuel sur la valeur WindowsPrincipald’énumération . Par défaut, la stratégie de principal est définie sur UnauthenticatedPrincipal. Si vous ne définissez pas la stratégie de principal sur WindowsPrincipal, une demande d’autorisation de principal échoue. Le code suivant doit être exécuté avant que l’autorisation du principal ne soit demandée : AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
Constructeurs
PrincipalPermissionAttribute(SecurityAction) |
Obsolète.
Initialise une nouvelle instance de la classe PrincipalPermissionAttribute avec le SecurityAction spécifié. |
Propriétés
Action |
Obsolète.
Obtient ou définit une action de sécurité. (Hérité de SecurityAttribute) |
Authenticated |
Obsolète.
Obtient ou définit une valeur qui indique si le principal actuel a été authentifié par le fournisseur sous-jacent de sécurité basée sur les rôles. |
Name |
Obsolète.
Obtient ou définit le nom de l’identité associée au principal actuel. |
Role |
Obsolète.
Obtient ou définit l’appartenance à un rôle de sécurité spécifié. |
TypeId |
Obsolète.
Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute. (Hérité de Attribute) |
Unrestricted |
Obsolète.
Obtient ou définit une valeur indiquant si l'autorisation complète (sans restriction) d'accès à la ressource protégée par l'attribut est déclarée. (Hérité de SecurityAttribute) |
Méthodes
CreatePermission() |
Obsolète.
Crée et retourne un nouveau PrincipalPermission. |
Equals(Object) |
Obsolète.
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
GetHashCode() |
Obsolète.
Retourne le code de hachage de cette instance. (Hérité de Attribute) |
GetType() |
Obsolète.
Obtient le Type de l'instance actuelle. (Hérité de Object) |
IsDefaultAttribute() |
Obsolète.
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute) |
Match(Object) |
Obsolète.
En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute) |
MemberwiseClone() |
Obsolète.
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Obsolète.
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Obsolète.
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Obsolète.
Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Obsolète.
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Obsolète.
Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute) |