Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase PrincipalPermission

 

Permite comprobar frente a la entidad de seguridad activa (vea IPrincipal) con las construcciones de lenguaje definidas tanto para la acción de seguridad declarativa como la imperativa. Esta clase no puede heredarse.

Espacio de nombres:   System.Security.Permissions
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Security.Permissions.PrincipalPermission

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class PrincipalPermission : IPermission, ISecurityEncodable, 
	IUnrestrictedPermission

NombreDescripción
System_CAPS_pubmethodPrincipalPermission(PermissionState)

Inicializa una nueva instancia de la clase PrincipalPermission con el objeto PermissionState especificado.

System_CAPS_pubmethodPrincipalPermission(String, String)

Inicializa una nueva instancia de la clase PrincipalPermission para el objeto name y role especificado.

System_CAPS_pubmethodPrincipalPermission(String, String, Boolean)

Inicializa una nueva instancia de la clase PrincipalPermission para los name, role especificados y un estado de autenticación.

NombreDescripción
System_CAPS_pubmethodCopy()

Crea y devuelve una copia idéntica del permiso actual.

System_CAPS_pubmethodDemand()

Determina en tiempo de ejecución si el elemento principal actual coincide con la entidad de seguridad especificada por el permiso actual.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto PrincipalPermission especificado es igual al objeto PrincipalPermission actual.(Invalida Object.Equals(Object)).

System_CAPS_pubmethodFromXml(SecurityElement)

Reconstruye un permiso con un estado especificado a partir de una codificación XML.

System_CAPS_pubmethodGetHashCode()

Obtiene un código hash para el objeto PrincipalPermission que es adecuado para usarlo en algoritmos hash y las estructuras de datos, como una tabla hash.(Invalida Object.GetHashCode()).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIntersect(IPermission)

Crea y devuelve un permiso que es la intersección del permiso actual y el permiso especificado.

System_CAPS_pubmethodIsSubsetOf(IPermission)

Determina si el permiso actual es un subconjunto del permiso especificado.

System_CAPS_pubmethodIsUnrestricted()

Devuelve un valor que indica si el permiso actual no está restringido.

System_CAPS_pubmethodToString()

Crea y devuelve una cadena que representa el permiso actual.(Invalida Object.ToString()).

System_CAPS_pubmethodToXml()

Crea una codificación XML del permiso y su estado actual.

System_CAPS_pubmethodUnion(IPermission)

Crea un permiso que es la unión del permiso actual y el permiso especificado.

Al pasar la información de identidad (nombre de usuario y rol) al constructor, PrincipalPermission puede utilizarse para solicitar que la identidad del principal activo coincida con esta información.

Para que coincida con el activo IPrincipal y IIdentity, deben coincidir con la identidad especificada y el rol. Si null se utiliza la cadena de identidad, se interpreta como una solicitud para que coincida cualquier identidad. El uso de null cadena role coincidirá con cualquier función. En consecuencia, pasando null parámetro para name o role para PrincipalPermission hará coincidir la identidad y funciones de cualquier IPrincipal. También es posible construir un PrincipalPermission que sólo determina si el IIdentity representa una entidad autenticada o no autenticada. En este caso, name y role se omiten.

A diferencia de otros permisos, PrincipalPermission no se extiende CodeAccessPermission. , Sin embargo, implementar la IPermission interfaz. Esto es porque PrincipalPermission no es un permiso de acceso a código; es decir, no está garantizado según la identidad del ensamblado en ejecución. En su lugar, permite al código realizar acciones (Demand, Union, Intersect, etc.) con la identidad del usuario actual de una manera coherente con la forma se realizan esas acciones para el acceso de código y los permisos de identidad del código.

System_CAPS_importantImportante

Antes de una petición de permiso principal es necesario establecer la directiva principal del dominio de aplicación actual en el valor de enumeración WindowsPrincipal. De forma predeterminada, la directiva principal se establece en UnauthenticatedPrincipal. Si no establece la directiva principal en WindowsPrincipal, se producirá un error en una petición de permiso principal. El siguiente código se debe ejecutar antes de que se produzca la entidad de seguridad:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

El ejemplo siguiente requiere que la entidad de seguridad activa sea un administrador. El name parámetro es null, que permite a cualquier usuario que sea administrador pasar la petición.

System_CAPS_noteNota

En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. 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. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar código que requiere permisos de administrador, primero debe elevar el nivel de sus privilegios de usuario estándar a administrador. 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.

using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: