AuthorizationContext Classe

Definição

Fornece informação de contexto sobre um evento de autorização. Isto inclui o principal que representa o chamador, o recurso que está a ser solicitado e a ação que está a ser executada.

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

Exemplos

O exemplo de código utilizado no AuthorizationContext tópico é retirado do Claims Based Authorization exemplo. Este exemplo fornece um gestor personalizado de autorização de reclamações que pode autorizar os sujeitos com base numa política especificada na configuração. Este gestor personalizado consiste em três componentes básicos: uma classe derivada de ClaimsAuthorizationManager que implementa o gestor, a ResourceAction classe que emparelha um recurso e uma ação, e um leitor de políticas que lê e compila a política especificada no ficheiro de configuração. Esta apólice compilada pode depois ser usada pelo gestor de autorização de sinistros para avaliar um principal e autorizar o acesso aos recursos. Nem todos os elementos são mostrados por brevidade. Para informações sobre esta amostra e outras amostras disponíveis para WIF e sobre onde as descarregar, consulte o Índice de Exemplos de Código WIF.

O código seguinte mostra o CheckAccess método para o gestor personalizado de autorização de sinistros. É invocada uma função que avalia o principal com base no recurso e na ação especificados no AuthorizationContext . Esta função devolve ou true ou false, o que concede ou nega acesso ao principal.

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 seguinte mostra um exemplo da política de autorização especificada na configuração. Na primeira apólice, o principal deve possuir uma das reivindicações especificadas para realizar a ação especificada sobre o recurso especificado. Na segunda apólice, o principal deve possuir ambas as reivindicações para poder realizar a ação especificada sobre o recurso especificado. Em todas as outras, o principal recebe acesso automaticamente independentemente das reivindicaçõ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>

Observações

A AuthorizationContext classe representa o contexto utilizado por um gestor de autorização de reivindicações, uma implementação da ClaimsAuthorizationManager classe, para determinar se um principal (sujeito) deve ser autorizado a realizar uma ação especificada num dado recurso. O gestor de autorização de sinistros avalia o contexto de autorização no CheckAccess método e nega ou concede o acesso com base nas reivindicações apresentadas pelo principal.

A Principal propriedade contém o principal para o qual a autorização está a ser solicitada, a Resource propriedade contém o recurso sobre o qual o principal está a ser autorizado, e a Action propriedade contém as ações que o principal pretende realizar sobre o recurso. Tanto o recurso como a ação são representados como uma coleção de reivindicações; no entanto, na maioria dos casos, cada coleção contém uma única reivindicação.

Construtores

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

Inicializa uma nova instância da AuthorizationContext classe com o principal especificado, reivindicação de recurso e reivindicação de ação.

AuthorizationContext(ClaimsPrincipal, String, String)

Inicializa uma nova instância da AuthorizationContext classe com o principal especificado, nome do recurso e nome da ação.

Propriedades

Name Description
Action

Obtém a ação para a qual o principal deve ser autorizado.

Principal

Obtém o principal (sujeito) para o qual a autorização está a ser solicitada.

Resource

Obtém o recurso sobre o qual o principal deve ser autorizado.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a