AuthorizationContext Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt contextinformatie over een autorisatie-gebeurtenis. Dit omvat de principal die de aanroeper vertegenwoordigt, de resource die wordt aangevraagd en de actie die wordt uitgevoerd.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Overname
-
AuthorizationContext
Voorbeelden
Het codevoorbeeld dat in het AuthorizationContext onderwerp wordt gebruikt, wordt uit het Claims Based Authorization voorbeeld genomen. Dit voorbeeld biedt een aangepaste claimautorisatiebeheerder die onderwerpen kan autoriseren op basis van een beleid dat is opgegeven in de configuratie. Deze aangepaste manager bestaat uit drie basisonderdelen: een klasse die is afgeleid van ClaimsAuthorizationManager die de manager implementeert, de ResourceAction klasse die een resource en een actie koppelt, en een beleidslezer die beleid leest en compileert dat is opgegeven in het configuratiebestand. Dit gecompileerde beleid kan vervolgens worden gebruikt door de claimautorisatiebeheerder om een principal te evalueren om toegang tot resources te autoriseren. Niet alle elementen worden omwille van de beknoptheid weergegeven. Zie de WIF-codevoorbeeldindex voor informatie over dit voorbeeld en andere voorbeelden die beschikbaar zijn voor WIF en waar u ze kunt downloaden.
De volgende code toont de CheckAccess methode voor de aangepaste claimautorisatiebeheerder. Een functie die de principal evalueert op basis van de resource en actie die in de AuthorizationContext principal is opgegeven, wordt aangeroepen. Deze functie retourneert true of false, waarmee toegang tot de principal wordt verleend of geweigerd.
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;
}
}
In de volgende XML ziet u een voorbeeld van het autorisatiebeleid dat is opgegeven in de configuratie. In het eerste beleid moet de principal een van de opgegeven claims bezitten om de opgegeven actie uit te voeren op de opgegeven resource. In het tweede beleid moet de principal beide claims bezitten om de opgegeven actie op de opgegeven resource uit te voeren. In alle andere wordt de principal automatisch toegang verleend, ongeacht de claims die de principal bezit.
<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>
Opmerkingen
De AuthorizationContext klasse vertegenwoordigt de context die wordt gebruikt door een claimautorisatiebeheerder, een implementatie van de ClaimsAuthorizationManager klasse, om te bepalen of een principal (onderwerp) moet worden geautoriseerd om een opgegeven actie uit te voeren op een bepaalde resource. De claimautorisatiebeheerder evalueert de autorisatiecontext in de CheckAccess methode en weigert of verleent toegang op basis van de claims die door de principal worden gepresenteerd.
De Principal eigenschap bevat de principal waarvoor autorisatie wordt aangevraagd, de Resource eigenschap bevat de resource waarop de principal wordt geautoriseerd en de Action eigenschap bevat de acties die de principal wil uitvoeren op de resource. Zowel de resource als de actie worden weergegeven als een verzameling claims; In de meeste gevallen bevat elke verzameling echter één claim.
Constructors
| Name | Description |
|---|---|
| AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Initialiseert een nieuw exemplaar van de AuthorizationContext klasse met de opgegeven principal, resourceclaim en actieclaim. |
| AuthorizationContext(ClaimsPrincipal, String, String) |
Initialiseert een nieuw exemplaar van de AuthorizationContext klasse met de opgegeven principal, resourcenaam en actienaam. |
Eigenschappen
| Name | Description |
|---|---|
| Action |
Hiermee haalt u de actie op waarvoor de principal moet worden geautoriseerd. |
| Principal |
Hiermee haalt u de principal (subject) op waarvoor autorisatie wordt aangevraagd. |
| Resource |
Hiermee haalt u de resource op waarvoor de principal moet worden geautoriseerd. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |