Partilhar via


AuthorizationContext Classe

Definição

Fornece informações de contexto de um evento de autorização. Isso inclui a entidade de segurança que representa o chamador, o recurso que está sendo solicitado e a ação que está sendo executada.

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
Herança
AuthorizationContext

Exemplos

O exemplo de código usado no AuthorizationContext tópico é obtido do Claims Based Authorization exemplo. Este exemplo fornece um gerenciador de autorização de declarações personalizado que pode autorizar assuntos com base em uma política especificada na configuração. Esse gerenciador personalizado consiste em três componentes básicos: uma classe derivada ClaimsAuthorizationManager do que implementa o gerenciador, a ResourceAction classe que emparelha um recurso e uma ação e um leitor de política que lê e compila a política especificada no arquivo de configuração. Essa política compilada pode ser usada pelo gerenciador de autorização de declarações para avaliar uma entidade de segurança para autorizar o acesso aos recursos. Nem todos os elementos são mostrados em prol da brevidade. Para obter informações sobre este exemplo e outros exemplos disponíveis para WIF e sobre onde baixá-los, consulte o Índice de Exemplo de Código WIF.

O código a seguir mostra o CheckAccess método para o gerenciador de autorização de declarações personalizadas. Uma função que avalia a entidade de segurança com base no recurso e na ação especificada no AuthorizationContext é invocada. Essa função retorna ou true false, que concede ou nega acesso à entidade de segurança.

static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
    /// <summary>
    /// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context 
    /// on the specified resoure
    /// </summary>
    /// <param name="pec">Authorization context</param>
    /// <returns>true if authorized, false otherwise</returns>
    public override bool CheckAccess(AuthorizationContext pec)
    {
        //
        // Evaluate the policy against the claims of the 
        // principal to determine access
        //
        bool access = false;
        try
        {
            ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);

            access = _policies[ra](pec.Principal);
        }
        catch (Exception)
        {
            access = false;
        }

        return access;
    }
}

O XML a seguir mostra um exemplo da política de autorização especificada na configuração. Na primeira política, a entidade de segurança deve possuir uma das declarações especificadas para executar a ação especificada no recurso especificado. Na segunda política, a entidade de segurança deve possuir ambas as declarações para poder executar a ação especificada no recurso especificado. Em todos os outros, a entidade de segurança recebe automaticamente acesso independentemente das declarações que possui.

<system.identityModel>
  <identityConfiguration>
    <claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
      <policy resource="http://localhost:28491/Developers.aspx" action="GET">
        <or>
          <claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
        </or>
      </policy>
      <policy resource="http://localhost:28491/Administrators.aspx" action="GET">
        <and>
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
          <claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
        </and>
      </policy>
      <policy resource="http://localhost:28491/Default.aspx" action="GET">
      </policy>
      <policy resource="http://localhost:28491/" action="GET">
      </policy>
      <policy resource="http://localhost:28491/Claims.aspx" action="GET">
      </policy>
    </claimsAuthorizationManager>

    ...

  </identityConfiguration>
</system.identityModel>

Comentários

A AuthorizationContext classe representa o contexto usado por um gerenciador de autorização de declarações, uma implementação da ClaimsAuthorizationManager classe, para determinar se uma entidade (entidade) deve ser autorizada a executar uma ação especificada em um determinado recurso. O gerenciador de autorização de declarações avalia o contexto de autorização no CheckAccess método e nega ou concede acesso com base nas declarações apresentadas pela entidade de segurança.

A Principal propriedade contém a entidade de segurança para a qual a autorização está sendo solicitada, a Resource propriedade contém o recurso no qual a entidade de segurança está sendo autorizada e a Action propriedade contém as ações que a entidade de segurança pretende executar no recurso. O recurso e a ação são representados como uma coleção de declarações; no entanto, na maioria dos casos, cada coleção contém uma única declaração.

Construtores

AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>)

Inicializa uma nova instância da classe AuthorizationContext com a entidade de segurança, a declaração de recurso e a declaração de ação especificadas.

AuthorizationContext(ClaimsPrincipal, String, String)

Inicializa uma nova instância da classe AuthorizationContext com a entidade de segurança, o nome do recurso e o nome da ação especificados.

Propriedades

Action

Obtém a ação para a qual a entidade de segurança deve ser autorizada.

Principal

Obtém a entidade de segurança (entidade) para a qual autorização está sendo solicitada.

Resource

Obtém o recurso no qual a entidade de segurança deve ser autorizada.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a