Sdílet prostřednictvím


AuthorizationContext Třída

Definice

Poskytuje kontextové informace o události autorizace. To zahrnuje objekt zabezpečení, který představuje volajícího, požadovaný prostředek a akci, která se provádí.

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
Dědičnost
AuthorizationContext

Příklady

Příklad kódu, který se používá v AuthorizationContext tématu, je převzat z ukázky Claims Based Authorization . Tato ukázka poskytuje vlastního správce autorizace deklarací identity, který může autorizovat předměty na základě zásad zadaných v konfiguraci. Tento vlastní správce se skládá ze tří základních komponent: třídy odvozené od ClaimsAuthorizationManager toho, která implementuje správce, třídu, ResourceAction která spáruje prostředek a akci, a čtenář zásad, který čte a kompiluje zásady zadané v konfiguračním souboru. Tuto kompilovanou zásadu pak může správce autorizace deklarací použít k vyhodnocení objektu zabezpečení, aby mohl autorizovat přístup k prostředkům. Ne všechny prvky se zobrazují kvůli stručnosti. Informace o této ukázce a dalších ukázkách, které jsou k dispozici pro WIF a o tom, kde je stáhnout, najdete v části Index ukázek kódu WIF.

Následující kód ukazuje metodu CheckAccess vlastního správce autorizace deklarací identity. Funkce, která vyhodnocuje objekt zabezpečení na základě prostředku a akce zadané v objektu je AuthorizationContext vyvolána. Tato funkce vrátí buď true nebo false, která buď udělí nebo odmítne přístup k objektu zabezpečení.

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;
    }
}

Následující kód XML ukazuje příklad zásad autorizace, které byly zadány v konfiguraci. V první zásadě musí objekt zabezpečení mít jednu ze zadaných deklarací identity, aby mohl provést zadanou akci u zadaného prostředku. Ve druhé zásadě musí objekt zabezpečení obsahovat obě deklarace identity, aby bylo možné provést zadanou akci se zadaným prostředkem. Ve všech ostatních je objekt zabezpečení automaticky udělen přístup bez ohledu na nároky, které vlastní.

<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>

Poznámky

Třída AuthorizationContext představuje kontext, který je používán správcem autorizace deklarací identity, implementací ClaimsAuthorizationManager třídy, k určení, zda má být objekt zabezpečení (předmět) autorizovaný k provedení zadané akce u daného prostředku. Správce autorizace deklarací identity vyhodnocuje kontext autorizace v CheckAccess metodě a buď odmítne nebo udělí přístup na základě deklarací identity prezentovaných objektem zabezpečení.

Vlastnost Principal obsahuje objekt zabezpečení, pro který se požaduje autorizace, vlastnost obsahuje prostředek, Resource na kterém je objekt zabezpečení autorizován, a Action vlastnost obsahuje akce, které objekt zabezpečení hodlá provést s prostředkem. Prostředek i akce jsou reprezentovány jako kolekce deklarací identity; ve většině případů však každá kolekce obsahuje jednu deklaraci identity.

Konstruktory

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

Inicializuje novou instanci AuthorizationContext třídy se zadaným objektem zabezpečení, deklarací prostředků a deklarací akce.

AuthorizationContext(ClaimsPrincipal, String, String)

Inicializuje novou instanci AuthorizationContext třídy se zadaným objektem zabezpečení, názvem prostředku a názvem akce.

Vlastnosti

Name Description
Action

Získá akci, pro kterou má být objekt zabezpečení autorizovaný.

Principal

Získá objekt zabezpečení (předmět), pro který se vyžaduje autorizace.

Resource

Získá prostředek, na kterém má být objekt zabezpečení autorizovaný.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro