Actualización: noviembre 2007
Permite comprobar el principal activo (vea IPrincipal) mediante el uso de las construcciones de lenguaje definidas para acciones de seguridad declarativas e imperativas. No se puede heredar esta clase.
Espacio de nombres:
System.Security.Permissions
Ensamblado:
mscorlib (en mscorlib.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class PrincipalPermission _
Implements IPermission, IUnrestrictedPermission, ISecurityEncodable
Dim instance As PrincipalPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class PrincipalPermission : IPermission,
IUnrestrictedPermission, ISecurityEncodable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class PrincipalPermission sealed : IPermission,
IUnrestrictedPermission, ISecurityEncodable
/** @attribute SerializableAttribute */
/** @attribute ComVisibleAttribute(true) */
public final class PrincipalPermission implements IPermission,
IUnrestrictedPermission, ISecurityEncodable
public final class PrincipalPermission implements IPermission, IUnrestrictedPermission, ISecurityEncodable
Mediante el paso de información de identidad (nombre de usuario y función) al constructor, PrincipalPermission se puede utilizar para solicitar que la identidad del principal activo coincida con esta información.
Para hacer coincidir el IPrincipal activo y el IIdentity asociado, tienen que coincidir la identidad y la función especificadas. Si se utiliza la cadena de identidad nullNothingnullptrreferencia null (Nothing en Visual Basic), se interpreta como una solicitud para que coincida cualquier identidad. El uso de la cadena de función nullNothingnullptrreferencia null (Nothing en Visual Basic) coincidirá con cualquier función. En consecuencia, el paso de un parámetro nullNothingnullptrreferencia null (Nothing en Visual Basic) para name o role a PrincipalPermission hará coincidir la identidad y las funciones de cualquier IPrincipal. También es posible crear un objeto PrincipalPermission que determine solamente si IIdentity representa una entidad autenticada o no autenticada. En este caso, se omiten name y role.
A diferencia de la mayoría de los demás permisos, PrincipalPermission no extiende CodeAccessPermission. Sin embargo, implementa la interfaz IPermission. Esto sucede debido a que PrincipalPermission no es un permiso de acceso a código; es decir, no está garantizado de acuerdo con la identidad del ensamblado que se esté ejecutando. En su lugar, permite al código realizar acciones (Demand, Union, Intersect, etc.) con la identidad del usuario actual de una forma coherente con la manera en que se realizan esas acciones para los permisos de identidad de código y acceso a código.
Nota importante: |
|---|
Antes de realizar una petición de permiso principal es necesario establecer la directiva principal del dominio de aplicación en el valor de enumeración WindowsPrincipal. De forma predeterminada, la directiva principal se establece en UnauthenticatedPrincipal. Si no se establece la directiva principal en WindowsPrincipal, la petición de permiso principal dará un error. Antes de que se produzca la petición, debería ejecutarse el siguiente código: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal). |
En el ejemplo de código siguiente se crean dos objetos PrincipalPermission que representan dos usuarios administrativos distintos, se forma la unión de dos y se realiza una petición. Demand tendrá éxito sólo si la implementación activa de IPrincipal representa al usuario Bob en el papel de Director o al usuario Louise en el papel de Supervisor.
Dim id1 As String = "Bob"
Dim role1 As String = "Manager"
Dim PrincipalPerm1 As New PrincipalPermission(id1, role1)
Dim id2 As String = "Louise"
Dim role2 As String = "Supervisor"
Dim PrincipalPerm2 As New PrincipalPermission(id2, role2)
PrincipalPerm1.Union(PrincipalPerm2).Demand()
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission PrincipalPerm1 = new PrincipalPermission(id1, role1);
String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission PrincipalPerm2 = new PrincipalPermission(id2, role2);
(PrincipalPerm1.Union(PrincipalPerm2)).Demand();
String^ id1 = "Bob";
String^ role1 = "Manager";
PrincipalPermission^ PrincipalPerm1 = gcnew PrincipalPermission( id1,role1 );
String^ id2 = "Louise";
String^ role2 = "Supervisor";
PrincipalPermission^ PrincipalPerm2 = gcnew PrincipalPermission( id2,role2 );
(PrincipalPerm1->Union( PrincipalPerm2 ))->Demand();
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission principalPerm1 = new PrincipalPermission(id1,
role1);
String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission principalPerm2 = new PrincipalPermission(id2,
role2);
principalPerm1.Union(principalPerm2).Demand();
System..::.Object
System.Security.Permissions..::.PrincipalPermission
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos 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.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
.NET Framework
Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0
Referencia
Otros recursos