PrincipalPermissionAttribute Classe

Definição

Permite que as ações de segurança para PrincipalPermission sejam aplicadas ao código usando a segurança declarativa.Allows security actions for PrincipalPermission to be applied to code using declarative security. Esta classe não pode ser herdada.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)]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Serializable]
public sealed class PrincipalPermissionAttribute : 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
Herança
Atributos

Exemplos

O exemplo a seguir demonstra como a classe PrincipalPermissionAttribute é usada declarativamente para exigir que o usuário atual seja um administrador.The following example demonstrates how the PrincipalPermissionAttribute class is used declaratively to demand that the current user be an administrator.

Observação

No Windows Vista, o UAC (controle de conta de usuário) determina os privilégios de um usuário.In Windows Vista, User Account Control (UAC) determines the privileges of a user. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do 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. Por padrão, você está na função de usuário padrão.By default, you are in the standard user role. Para executar o código que exige que você seja um administrador, você deve primeiro elevar seus privilégios do usuário padrão para o administrador.To execute the code that requires you to be an administrator, you must first elevate your privileges from standard user to administrator. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar 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.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

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

    End Sub
End Class

Comentários

Importante

Não há mais suporte para código parcialmente confiável.Partially trusted code is no longer supported. Esse atributo não tem nenhum efeito no .NET Core.This attribute has no effect in .NET Core.

PrincipalPermissionAttribute pode ser usado para exigir declarativamente que os usuários que executam o código pertençam a uma função especificada ou que tenham sido autenticados.PrincipalPermissionAttribute can be used to declaratively demand that users running your code belong to a specified role or have been authenticated. O uso de Unrestricted cria um PrincipalPermission com Authenticated definido como true e Name e Role definido como null.Use of Unrestricted creates a PrincipalPermission with Authenticated set to true and Name and Role set to null.

O escopo da declaração que é permitido depende do SecurityAction usado.The scope of the declaration that is allowed depends on the SecurityAction that is used. PrincipalPermissionAttribute não pode ser aplicado no nível do assembly.PrincipalPermissionAttribute cannot be applied at the assembly level.

As informações de segurança declaradas por um atributo de segurança são armazenadas nos metadados do destino do atributo e são acessadas pelo sistema em tempo de execução.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. Os atributos de segurança são usados apenas para segurança declarativa.Security attributes are used only for declarative security. Para segurança imperativa, use a classe de permissão correspondente.For imperative security, use the corresponding permission class.

Importante

Antes de usar essa classe para solicitar a permissão de entidade de segurança, você deve definir a política principal do domínio do aplicativo atual para o valor de enumeração 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. Por padrão, a política principal é definida como UnauthenticatedPrincipal.By default, the principal policy is set to UnauthenticatedPrincipal. Se você não definir a política principal como WindowsPrincipal, ocorrerá uma demanda por permissão de entidade de segurança.If you do not set the principal policy to WindowsPrincipal, a demand for principal permission will fail. O código a seguir deve ser executado antes que a permissão de entidade de segurança seja solicitada: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).The following code should be executed before the principal permission is demanded: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Construtores

PrincipalPermissionAttribute(SecurityAction)

Inicializa uma nova instância da classe PrincipalPermissionAttribute com SecurityAction especificado.Initializes a new instance of the PrincipalPermissionAttribute class with the specified SecurityAction.

Propriedades

Action

Obtém ou define uma ação de segurança.Gets or sets a security action.

(Herdado de SecurityAttribute)
Authenticated

Obtém ou define um valor que indica se a entidade de segurança atual foi autenticada pelo provedor de segurança baseada em funções subjacente.Gets or sets a value indicating whether the current principal has been authenticated by the underlying role-based security provider.

Name

Obtém ou define o nome da identidade associada à entidade de segurança atual.Gets or sets the name of the identity associated with the current principal.

Role

Obtém ou define a associação em uma função de segurança especificada.Gets or sets membership in a specified security role.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Herdado de Attribute)
Unrestricted

Obtém ou define um valor que indica se a permissão total (irrestrita) para o recurso protegido pelo atributo é declarada.Gets or sets a value indicating whether full (unrestricted) permission to the resource protected by the attribute is declared.

(Herdado de SecurityAttribute)

Métodos

CreatePermission()

Cria e retorna um novo PrincipalPermission.Creates and returns a new PrincipalPermission.

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.Returns the hash code for this instance.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.Maps a set of names to a corresponding set of dispatch identifiers.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.Provides access to properties and methods exposed by an object.

(Herdado de Attribute)

Aplica-se a

Veja também