Share via


AuthorizationContext Classe

Definizione

Fornisce informazioni sul contesto di un evento di autorizzazione. ad esempio l'entità che rappresenta il chiamante, la risorsa richiesta e l'azione eseguita.

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 autorizzazioni 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 delle autorizzazioni delle 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.

Il codice seguente illustra il CheckAccess metodo per la gestione autorizzazioni attestazioni personalizzate. Viene richiamata una funzione che valuta l'entità in base alla risorsa e all'azione specificata in AuthorizationContext . 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 mostra 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; Tuttavia, nella maggior parte dei casi, ogni raccolta contiene una singola attestazione.

Costruttori

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

Inizializza una nuova istanza della classe AuthorizationContext con l'entità di sicurezza, l'attestazione della risorsa e l'attestazione dell'azione specificati.

AuthorizationContext(ClaimsPrincipal, String, String)

Inizializza una nuova istanza della classe AuthorizationContext con l'entità di sicurezza, il nome della risorsa e il nome dell'azione specificati.

Proprietà

Action

Ottiene l'azione per la quale il principale deve essere autorizzato.

Principal

Ottiene il principale (oggetto) per il quale viene richiesta l'autorizzazione.

Resource

Ottiene la risorsa verso la quale il principale deve essere autorizzato.

Metodi

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 l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a