AuthorizationContext Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Innehåller kontextinformation om en auktoriseringshändelse. Detta inkluderar det huvudnamn som representerar anroparen, resursen som begärs och den åtgärd som utförs.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Arv
-
AuthorizationContext
Exempel
Kodexemplet som används i ämnet AuthorizationContext tas från Claims Based Authorization exemplet. Det här exemplet innehåller en ansvarig för anpassad anspråksauktorisering som kan auktorisera ämnen baserat på en princip som anges i konfigurationen. Den här anpassade hanteraren består av tre grundläggande komponenter: en klass som härleds från ClaimsAuthorizationManager som implementerar hanteraren, ResourceAction klassen som parkopplar en resurs och en åtgärd samt en principläsare som läser och kompilerar en princip som anges i konfigurationsfilen. Den här kompilerade principen kan sedan användas av anspråksauktoriseringshanteraren för att utvärdera ett huvudnamn för att auktorisera åtkomst till resurser. Alla element visas inte för korthetens skull. Information om det här exemplet och andra exempel som är tillgängliga för WIF och var du kan ladda ned dem finns i WIF Code Sample Index.
Följande kod visar CheckAccess metoden för hanteraren för anpassade anspråksauktorisering. En funktion som utvärderar huvudkontot baserat på resursen och åtgärden som anges i AuthorizationContext anropas. Den här funktionen returnerar antingen true eller false, som antingen beviljar eller nekar åtkomst till huvudkontot.
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;
}
}
Följande XML visar ett exempel på auktoriseringsprincipen som angavs i konfigurationen. I den första principen måste huvudkontot ha ett av de angivna anspråken för att kunna utföra den angivna åtgärden på den angivna resursen. I den andra principen måste huvudkontot ha båda anspråken för att kunna utföra den angivna åtgärden på den angivna resursen. I alla andra beviljas huvudmannen automatiskt åtkomst oavsett vilka anspråk det har.
<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>
Kommentarer
Klassen AuthorizationContext representerar kontexten som används av en anspråksauktoriseringshanterare, en implementering av ClaimsAuthorizationManager klassen, för att avgöra om ett huvudnamn (ämne) ska ha behörighet att utföra en angiven åtgärd på en viss resurs. Hanteraren för anspråksauktorisering utvärderar auktoriseringskontexten CheckAccess i metoden och nekar eller beviljar åtkomst baserat på de anspråk som presenteras av huvudkontot.
Egenskapen Principal innehåller det huvudnamn för vilket auktorisering begärs, Resource egenskapen innehåller den resurs som huvudkontot auktoriseras för och Action egenskapen innehåller de åtgärder som huvudkontot avser att utföra på resursen. Både resursen och åtgärden representeras som en samling anspråk. I de flesta fall innehåller dock varje samling ett enda anspråk.
Konstruktorer
| Name | Description |
|---|---|
| AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Initierar en ny instans av AuthorizationContext klassen med det angivna huvudkontot, resursanspråket och åtgärdsanspråket. |
| AuthorizationContext(ClaimsPrincipal, String, String) |
Initierar en ny instans av AuthorizationContext klassen med angivet huvudnamn, resursnamn och åtgärdsnamn. |
Egenskaper
| Name | Description |
|---|---|
| Action |
Hämtar den åtgärd som huvudkontot ska auktoriseras för. |
| Principal |
Hämtar det huvudnamn (ämne) för vilket auktorisering begärs. |
| Resource |
Hämtar den resurs som huvudkontot ska auktoriseras för. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |