AuthorizationContext Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje kontextové informace o autorizační události. To zahrnuje objekt zabezpečení, který představuje volajícího, požadovaný prostředek a prováděnou akci.
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é z ClaimsAuthorizationManager implementace správce, třídy, ResourceAction
která spáruje prostředek a akci, a čtečky zásad, která čte a kompiluje zásady zadané v konfiguračním souboru. Tyto kompilované zásady pak může použít správce autorizace deklarací identity k vyhodnocení objektu zabezpečení za účelem autorizace přístupu k prostředkům. Kvůli stručnosti se nezobrazují všechny prvky. Informace o této ukázce a dalších ukázkách dostupných pro WIF a o tom, kam je stáhnout, najdete v tématu Index ukázek kódu WIF.
Následující kód ukazuje metodu CheckAccess pro vlastního správce autorizace deklarací identity. Vyvolá se funkce, která vyhodnocuje objekt zabezpečení na základě prostředku a akce zadané v objektu AuthorizationContext . Tato funkce vrátí buď true
nebo false
, což buď udělí nebo odepře 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í obsahovat jednu ze zadaných deklarací identity, aby mohl provést zadanou akci se zadaným prostředkem. Ve druhé zásadě musí objekt zabezpečení obsahovat obě deklarace identity, aby mohl provést zadanou akci se zadaným prostředkem. Ve všech ostatních se objektu zabezpečení automaticky udělí přístup bez ohledu na to, které deklarace identity 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í ClaimsAuthorizationManager identity, implementací třídy, k určení, zda by objekt zabezpečení (předmět) měl být autorizován k provedení zadané akce s daným prostředkem. Správce autorizace deklarací identity vyhodnotí kontext autorizace v CheckAccess metodě a buď odmítne nebo udělí přístup na základě deklarací identity předložené objektem zabezpečení.
Vlastnost Principal obsahuje objekt zabezpečení, pro který se vyžaduje autorizace, Resource vlastnost obsahuje prostředek, pro který je objekt zabezpečení autorizován, a Action vlastnost obsahuje akce, které má objekt zabezpečení v úmyslu 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
AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Inicializuje novou instanci třídy pomocí zadaného objektu AuthorizationContext zabezpečení, deklarace identity prostředku a deklarace 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
Action |
Získá akci, pro kterou má být objekt zabezpečení autorizován. |
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
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |