PrincipalPermission Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Precaución
Code Access Security is not supported or honored by the runtime.
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.
public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[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 PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermission = class
interface IPermission
interface ISecurityEncodable
interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
interface IPermission
interface IUnrestrictedPermission
interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
interface IPermission
interface IUnrestrictedPermission
interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
interface IPermission
interface ISecurityEncodable
interface IUnrestrictedPermission
type PrincipalPermission = class
interface IPermission
interface ISecurityEncodable
interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
- Herencia
-
PrincipalPermission
- Atributos
- Implementaciones
Ejemplos
En el ejemplo siguiente se requiere que la entidad de seguridad activa sea administrador. El name
parámetro es null
, que permite a cualquier usuario que sea administrador pasar la demanda.
Nota
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 namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
int main(array<System::String ^> ^args)
{
System::String^ null;
AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
principalPerm->Demand();
Console::WriteLine("Demand succeeded");
return 0;
}
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.");
}
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Class SecurityPrincipalDemo
Public Shared Sub Main()
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
principalPerm.Demand()
Console.WriteLine("Demand succeeded.")
End Sub
End Class
Comentarios
Precaución
La seguridad de acceso del código (CAS) ha quedado en desuso en todas las versiones de .NET Framework y .NET. Las versiones recientes de .NET no respetan las anotaciones de CAS y generan errores si se usan API relacionadas con CAS. Los desarrolladores deben buscar medios alternativos para realizar tareas de seguridad.
Al pasar información de identidad (nombre de usuario y rol) al constructor, PrincipalPermission se puede usar para exigir que la identidad de la entidad de seguridad activa coincida con esta información.
Para que coincida con el activo IPrincipal y asociado IIdentity, la identidad y el rol especificados deben coincidir. Si null
se usa la cadena de identidad, se interpreta como una solicitud para que coincida con cualquier identidad. El uso de la cadena de null
rol coincidirá con cualquier rol. Por implicación, pasar null
el parámetro para name
o role
a PrincipalPermission coincidirá con la identidad y los roles de cualquier IPrincipal. También es posible construir un PrincipalPermission objeto que solo determina si IIdentity representa una entidad autenticada o no autenticada. En este caso, name
y role
se omiten.
A diferencia de la mayoría de los otros permisos, PrincipalPermission no extiende CodeAccessPermission. Sin embargo, implementa la IPermission interfaz . Esto se debe PrincipalPermission a que no es un permiso de acceso de código; es decir, no se concede en función de la identidad del ensamblado en ejecución. En su lugar, permite que el código realice acciones (Demand, Union, Intersectetc.) en la identidad del usuario actual de forma coherente con la forma en que esas acciones se realizan para el acceso al código y los permisos de identidad de código.
Importante
Antes de una demanda de permiso de entidad de seguridad, es necesario establecer la directiva principal del dominio de aplicación actual en el valor WindowsPrincipalde enumeración . De forma predeterminada, la directiva principal se establece en UnauthenticatedPrincipal. Si no establece la directiva de entidad de seguridad WindowsPrincipalen , se producirá un error en una demanda de permiso de entidad de seguridad. Se debe ejecutar el código siguiente antes de que se exija el permiso de entidad de seguridad:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
Constructores
PrincipalPermission(PermissionState) |
Obsoletos.
Inicializa una nueva instancia de la clase PrincipalPermission con el objeto PermissionState especificado. |
PrincipalPermission(String, String) |
Obsoletos.
Inicializa una nueva instancia de la clase PrincipalPermission para el objeto |
PrincipalPermission(String, String, Boolean) |
Obsoletos.
Inicializa una nueva instancia de la clase PrincipalPermission para los |
Métodos
Copy() |
Obsoletos.
Crea y devuelve una copia idéntica del permiso actual. |
Demand() |
Obsoletos.
Determina en tiempo de ejecución si el elemento principal actual coincide con la entidad de seguridad especificada por el permiso actual. |
Equals(Object) |
Obsoletos.
Determina si el objeto PrincipalPermission especificado es igual al objeto PrincipalPermission actual. |
Equals(Object) |
Obsoletos.
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
FromXml(SecurityElement) |
Obsoletos.
Reconstruye un permiso con un estado especificado a partir de una codificación XML. |
GetHashCode() |
Obsoletos.
Obtiene un código hash para el objeto PrincipalPermission que es adecuado para su uso en algoritmos hash y estructuras de datos como una tabla hash. |
GetHashCode() |
Obsoletos.
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obsoletos.
Obtiene el Type de la instancia actual. (Heredado de Object) |
Intersect(IPermission) |
Obsoletos.
Crea y devuelve un permiso que es la intersección del permiso actual y el permiso especificado. |
IsSubsetOf(IPermission) |
Obsoletos.
Determina si el permiso actual es un subconjunto del permiso especificado. |
IsUnrestricted() |
Obsoletos.
Devuelve un valor que indica si el permiso actual no está restringido. |
MemberwiseClone() |
Obsoletos.
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Obsoletos.
Crea y devuelve una cadena que representa el permiso actual. |
ToXml() |
Obsoletos.
Crea una codificación XML del permiso y su estado actual. |
Union(IPermission) |
Obsoletos.
Crea un permiso que es la unión del permiso actual y el permiso especificado. |