AuthorizationContext Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce informazioni di contesto di un evento di autorizzazione. Include l'entità che rappresenta il chiamante, la risorsa richiesta e l'azione da eseguire.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Ereditarietà
-
AuthorizationContext
Esempio
L'esempio di codice usato nell'argomento AuthorizationContext è tratto dall'esempio Claims Based Authorization . Questo esempio fornisce un gestore di autorizzazione delle attestazioni personalizzato che può autorizzare soggetti in base a un criterio specificato nella configurazione. Questo gestore personalizzato è costituito da tre componenti di base: una classe derivata da ClaimsAuthorizationManager che implementa il gestore, la ResourceAction classe che associa una risorsa e un'azione e un lettore di criteri che legge e compila i criteri specificati nel file di configurazione. Questo criterio compilato può quindi essere usato dal gestore autorizzazioni attestazioni per valutare un'entità per autorizzare l'accesso alle risorse. Non tutti gli elementi vengono visualizzati per brevità. Per informazioni su questo esempio e altri esempi disponibili per WIF e su dove scaricarli, vedere Indice di esempio di codice WIF.
Nel codice seguente viene illustrato il CheckAccess metodo per il gestore autorizzazioni attestazioni personalizzate. Viene richiamata una funzione che valuta l'entità in base alla risorsa e all'azione AuthorizationContext specificata in . Questa funzione restituisce true o false, che concede o nega l'accesso all'entità.
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;
}
}
Il codice XML seguente illustra un esempio dei criteri di autorizzazione specificati nella configurazione. Nel primo criterio, l'entità deve possedere una delle attestazioni specificate per eseguire l'azione specificata sulla risorsa specificata. Nel secondo criterio, l'entità deve possedere entrambe le attestazioni per poter eseguire l'azione specificata sulla risorsa specificata. In tutti gli altri, all'entità viene concesso automaticamente l'accesso indipendentemente dalle attestazioni che possiede.
<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>
Commenti
La AuthorizationContext classe rappresenta il contesto utilizzato da un gestore autorizzazioni attestazioni, un'implementazione della ClaimsAuthorizationManager classe , per determinare se un'entità (oggetto) deve essere autorizzata a eseguire un'azione specificata su una determinata risorsa. Gestione autorizzazioni attestazioni valuta il contesto di autorizzazione nel CheckAccess metodo e nega o concede l'accesso in base alle attestazioni presentate dall'entità.
La Principal proprietà contiene l'entità per cui viene richiesta l'autorizzazione, la Resource proprietà contiene la risorsa in cui l'entità è autorizzata e la Action proprietà contiene le azioni che l'entità intende eseguire sulla risorsa. Sia la risorsa che l'azione sono rappresentate come una raccolta di attestazioni; Nella maggior parte dei casi, tuttavia, ogni raccolta contiene una singola attestazione.
Costruttori
| Nome | Descrizione |
|---|---|
| AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Inizializza una nuova istanza della AuthorizationContext classe con l'entità, l'attestazione di risorsa e l'attestazione di azione specificati. |
| AuthorizationContext(ClaimsPrincipal, String, String) |
Inizializza una nuova istanza della AuthorizationContext classe con l'entità, il nome della risorsa e il nome dell'azione specificati. |
Proprietà
| Nome | Descrizione |
|---|---|
| Action |
Ottiene l'azione per cui l'entità deve essere autorizzata. |
| Principal |
Ottiene l'entità (oggetto) per cui viene richiesta l'autorizzazione. |
| Resource |
Ottiene la risorsa in cui deve essere autorizzata l'entità. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |