Permite aplicar acciones de seguridad de
PrincipalPermission al código mediante el uso de seguridad declarativa. No se puede heredar esta clase.
Espacio de nombres: System.Security.Permissions
Ensamblado: mscorlib (en mscorlib.dll)

Sintaxis
Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple:=True, Inherited:=False)> _
Public NotInheritable Class PrincipalPermissionAttribute
Inherits CodeAccessSecurityAttribute
Dim instance As PrincipalPermissionAttribute
[SerializableAttribute]
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class PrincipalPermissionAttribute : CodeAccessSecurityAttribute
[SerializableAttribute]
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple=true, Inherited=false)]
public ref class PrincipalPermissionAttribute sealed : public CodeAccessSecurityAttribute
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false) */
public final class PrincipalPermissionAttribute extends CodeAccessSecurityAttribute
SerializableAttribute
ComVisibleAttribute(true)
AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false)
public final class PrincipalPermissionAttribute extends CodeAccessSecurityAttribute

Comentarios
Es posible utilizar PrincipalPermissionAttribute para solicitar de forma declarativa que los usuarios que ejecutan el código pertenezcan a una función determinada o se hayan autenticado. El uso de Unrestricted crea PrincipalPermission con Authenticated establecido en true y Name y Role establecidos en referencia de objeto null (Nothing en Visual Basic).
El ámbito permitido de la declaración depende del SecurityAction utilizado. PrincipalPermissionAttribute no se puede aplicar en el nivel de ensamblado.
La información de seguridad declarada por un atributo de seguridad se almacena en los metadatos del destino del atributo y el sistema obtiene acceso a él en tiempo de ejecución. Los atributos de seguridad sólo se utilizan para la seguridad declarativa. Para obtener una seguridad imperativa, utilice la clase de permiso correspondiente.
Importante antes de crear una petición de permiso principal, es necesario establecer la directiva principal de dominio de aplicación actual en el valor de enumeración WindowsPrincipal. De manera predeterminada, esta directiva se establece en UnauthenticatedPrincipal. De no establecerse en WindowsPrincipal, fallará la petición de permiso principal. Antes de que se produzca la petición, debería ejecutarse el siguiente código: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Ejemplo
El siguiente ejemplo muestra cómo se puede utilizar PrincipalPermission de forma declarativa para solicitar que el usuario actual sea Bob y pertenezca a la función de Supervisor.
<PrincipalPermissionAttribute(SecurityAction.Demand, _
Name := "Bob", Role := "Supervisor")> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Name="Bob",
Role="Supervisor")]
[PrincipalPermissionAttribute(SecurityAction::Demand,Name="Bob",
Role="Supervisor")]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand,
Name = "Bob", Role = "Supervisor")
*/
El siguiente ejemplo muestra cómo solicitar que la identidad del usuario actual sea Bob independientemente de su pertenencia a una función determinada.
<PrincipalPermissionAttribute(SecurityAction.Demand, _
Name := "Bob")> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Name="Bob")]
[PrincipalPermissionAttribute(SecurityAction::Demand,Name="Bob")]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Bob")
*/
En el siguiente ejemplo se muestra cómo solicitar sólo que el usuario esté autenticado.
<PrincipalPermissionAttribute(SecurityAction.Demand, _
Authenticated := True)> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Authenticated=true)]
[PrincipalPermissionAttribute(SecurityAction::Demand,Authenticated=true)]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand,
Authenticated = true)
*/

Jerarquía de herencia

Seguridad para subprocesos
Los miembros estáticos públicos (
Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Plataformas
Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

Información de versión
.NET Framework
Compatible con: 2.0, 1.1, 1.0

Vea también