PrincipalPermissionAttribute PrincipalPermissionAttribute PrincipalPermissionAttribute PrincipalPermissionAttribute Class

Definición

Permite acciones de seguridad de PrincipalPermission para que se apliquen al código mediante seguridad declarativa.Allows security actions for PrincipalPermission to be applied to code using declarative security. Esta clase no puede heredarse.This class cannot be inherited.

public ref class PrincipalPermissionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
type PrincipalPermissionAttribute = class
    inherit CodeAccessSecurityAttribute
Public NotInheritable Class PrincipalPermissionAttribute
Inherits CodeAccessSecurityAttribute
Herencia
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo el PrincipalPermissionAttribute clase se utiliza mediante declaración para exigir que el usuario actual sea un administrador.The following example demonstrates how the PrincipalPermissionAttribute class is used declaratively to demand that the current user be an administrator.

Nota

En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario.In Windows Vista, User Account Control (UAC) determines the privileges of a user. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. De forma predeterminada, se le asignará el rol de usuario estándar.By default, you are in the standard user role. Para ejecutar código que requiere permisos de administrador, primero debe elevar el nivel de sus privilegios de usuario estándar a administrador.To execute the code that requires you to be an administrator, you must first elevate your privileges from standard user to administrator. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

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
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 'Main

    <PrincipalPermission(SecurityAction.Demand, Role:="Administrators")> _
    Shared Sub CheckAdministrator()
        Console.WriteLine("User is an administrator")

    End Sub 'CheckAdministrator
End Class 'SecurityPrincipalDemo

Comentarios

PrincipalPermissionAttribute puede utilizarse para exigir que los usuarios que ejecutan su código pertenecen a un rol especificado de forma declarativa o se han autenticado.PrincipalPermissionAttribute can be used to declaratively demand that users running your code belong to a specified role or have been authenticated. El uso de Unrestricted crea un PrincipalPermission con Authenticated establecido en true y Name y Role establecido en null.Use of Unrestricted creates a PrincipalPermission with Authenticated set to true and Name and Role set to null.

Depende del ámbito de la declaración que se permite el SecurityAction que se utiliza.The scope of the declaration that is allowed depends on the SecurityAction that is used. PrincipalPermissionAttribute no se puede aplicar en el nivel de ensamblado.PrincipalPermissionAttribute cannot be applied at the assembly level.

La información de seguridad declarada por un atributo de seguridad se almacena en los metadatos del destino del atributo y se tiene acceso el sistema en tiempo de ejecución.The security information declared by a security attribute is stored in the metadata of the attribute target and is accessed by the system at run time. Los atributos de seguridad se usan para la seguridad declarativa.Security attributes are used only for declarative security. Para la seguridad imperativa, utilice la clase de permiso correspondiente.For imperative security, use the corresponding permission class.

Importante

Antes de usar esta clase para exigir el permiso principal, debe establecer la directiva de entidad del dominio de aplicación actual para el valor de enumeración WindowsPrincipal.Before you use this class to demand principal permission, you must set the current application domain's principal policy to the enumeration value WindowsPrincipal. De forma predeterminada, la directiva principal se establece en UnauthenticatedPrincipal.By default, the principal policy is set to UnauthenticatedPrincipal. Si no establece la directiva principal en WindowsPrincipal, se producirá un error en una solicitud de permiso de entidad de seguridad.If you do not set the principal policy to WindowsPrincipal, a demand for principal permission will fail. Antes de que se produzca la entidad de seguridad, se debe ejecutar el código siguiente: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).The following code should be executed before the principal permission is demanded: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Constructores

PrincipalPermissionAttribute(SecurityAction) PrincipalPermissionAttribute(SecurityAction) PrincipalPermissionAttribute(SecurityAction) PrincipalPermissionAttribute(SecurityAction)

Inicializa una nueva instancia de la clase PrincipalPermissionAttribute con el objeto SecurityAction especificado.Initializes a new instance of the PrincipalPermissionAttribute class with the specified SecurityAction.

Propiedades

Action Action Action Action

Obtiene o establece una acción de seguridad.Gets or sets a security action.

(Inherited from SecurityAttribute)
Authenticated Authenticated Authenticated Authenticated

Obtiene o establece un valor que indica si la entidad de seguridad actual se ha autenticado por el proveedor subyacente de seguridad basada en roles.Gets or sets a value indicating whether the current principal has been authenticated by the underlying role-based security provider.

Name Name Name Name

Obtiene o establece el nombre de la identidad asociada al valor de la entidad de seguridad actual.Gets or sets the name of the identity associated with the current principal.

Role Role Role Role

Obtiene o establece la pertenencia a un rol de seguridad específico.Gets or sets membership in a specified security role.

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Unrestricted Unrestricted Unrestricted Unrestricted

Obtiene o establece un valor que indica si se declara el permiso completo (sin restricciones) al recurso protegido por el atributo.Gets or sets a value indicating whether full (unrestricted) permission to the resource protected by the attribute is declared.

(Inherited from SecurityAttribute)

Métodos

CreatePermission() CreatePermission() CreatePermission() CreatePermission()

Crea y devuelve un nuevo objeto PrincipalPermission.Creates and returns a new PrincipalPermission.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Se aplica a

Consulte también: