AuthorizationContext Classe
Definição
Fornece informações de contexto de um evento de autorização.Provides context information of an authorization event. 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.This includes the principal that represents the caller, the resource that is being requested, and the action that is being performed.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Herança
-
AuthorizationContext
Exemplos
O exemplo de código que é usado no AuthorizationContext tópico é extraído do Claims Based Authorization exemplo.The code example that is used in the AuthorizationContext topic is taken from the Claims Based Authorization sample. 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.This sample provides a custom claims authorization manager that can authorize subjects based on a policy that is specified in configuration. Esse gerenciador personalizado consiste em três componentes básicos: uma classe derivada de ClaimsAuthorizationManager que implementa o gerente, 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.This custom manager consists of three basic components: a class derived from ClaimsAuthorizationManager that implements the manager, the ResourceAction class that pairs a resource and an action, and a policy reader that reads and compiles policy that is specified in the configuration file. Essa política compilada pode ser usada pelo Gerenciador de autorização de declarações para avaliar uma entidade de segurança a fim de autorizar o acesso aos recursos.This compiled policy can then be used by the claims authorization manager to evaluate a principal in order to authorize access to resources. Nem todos os elementos são mostrados para fins de brevidade.Not all elements are shown for the sake of brevity. Para obter informações sobre esse exemplo e outros exemplos disponíveis para o WIF e sobre onde baixá-los, consulte o índice de exemplo de código do WIF.For information about this sample and other samples available for WIF and about where to download them, see WIF Code Sample Index.
O código a seguir mostra o CheckAccess método para o Gerenciador de autorização de declarações personalizado.The following code shows the CheckAccess method for the custom claims authorization manager. Uma função que avalia a entidade de segurança com base no recurso e na ação especificada no AuthorizationContext é invocada.A function that evaluates the principal based on the resource and action specified in the AuthorizationContext is invoked. Essa função retorna true ou false , que concede ou nega o acesso à entidade de segurança.This function returns either true or false, which either grants or denies access to the 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 a seguir mostra um exemplo da política de autorização que foi especificada na configuração.The following XML shows an example of the authorization policy that was specified in configuration. Na primeira política, a entidade de segurança deve ter uma das declarações especificadas para executar a ação especificada no recurso especificado.In the first policy, the principal must possess one of the specified claims in order to perform the specified action on the specified resource. Na segunda política, a entidade de segurança deve ter ambas as declarações para poder executar a ação especificada no recurso especificado.In the second policy, the principal must possess both claims to be able to perform the specified action on the specified resource. Em todos os outros, a entidade de segurança recebe automaticamente o acesso, independentemente das declarações que ele possui.In all others, the principal is automatically granted access regardless of the claims it possesses.
<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 (Subject) deve ser autorizada a executar uma ação especificada em um determinado recurso.The AuthorizationContext class represents the context that is used by a claims authorization manager, an implementation of the ClaimsAuthorizationManager class, to determine whether a principal (subject) should be authorized to perform a specified action on a given resource. 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.The claims authorization manager evaluates the authorization context in the CheckAccess method and either denies or grants access based on the claims presented by the principal.
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.The Principal property contains the principal for which authorization is being requested, the Resource property contains the resource on which the principal is being authorized, and the Action property contains the actions that the principal intends to perform on the resource. 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.Both the resource and the action are represented as a collection of claims; however, in most cases, each collection contains a single claim.
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.Initializes a new instance of the AuthorizationContext class with the specified principal, resource claim, and action claim. |
| 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.Initializes a new instance of the AuthorizationContext class with the specified principal, resource name, and action name. |
Propriedades
| Action |
Obtém a ação para a qual a entidade de segurança deve ser autorizada.Gets the action for which the principal is to be authorized. |
| Principal |
Obtém a entidade de segurança (entidade) para a qual autorização está sendo solicitada.Gets the principal (subject) for which authorization is being requested. |
| Resource |
Obtém o recurso no qual a entidade de segurança deve ser autorizada.Gets the resource on which the principal is to be authorized. |
Métodos
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão.Serves as the default hash function. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual.Gets the Type of the current instance. (Herdado de Object) |
| 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) |