AuthorizationContext Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zawiera informacje kontekstowe zdarzenia autoryzacji. Obejmuje to podmiot zabezpieczeń reprezentujący obiekt wywołujący, żądany zasób i wykonywaną akcję.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Dziedziczenie
-
AuthorizationContext
Przykłady
Przykładowy kod używany w temacie AuthorizationContext jest pobierany z przykładu Claims Based Authorization . Ten przykład zawiera niestandardowego menedżera autoryzacji oświadczeń, który może autoryzować podmioty na podstawie zasad określonych w konfiguracji. Ten menedżer niestandardowy składa się z trzech podstawowych składników: klasy pochodzącej z ClaimsAuthorizationManager tej klasy, która implementuje menedżera, ResourceAction klasę, która paruje zasób i akcję, oraz czytnik zasad, który odczytuje i kompiluje zasady określone w pliku konfiguracji. Te skompilowane zasady mogą być następnie używane przez menedżera autoryzacji oświadczeń do oceny podmiotu zabezpieczeń w celu autoryzowania dostępu do zasobów. Nie wszystkie elementy są wyświetlane ze względu na zwięzłość. Aby uzyskać informacje o tym przykładzie i innych przykładach dostępnych dla programu WIF oraz o tym, gdzie je pobrać, zobacz Przykładowy indeks kodu programu WIF.
Poniższy kod przedstawia metodę CheckAccess dla niestandardowego menedżera autoryzacji oświadczeń. Funkcja, która ocenia podmiot zabezpieczeń na podstawie zasobu i akcji określonej w obiekcie AuthorizationContext , jest wywoływana. Ta funkcja zwraca wartość true lub false, która udziela lub odmawia dostępu do podmiotu zabezpieczeń.
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;
}
}
Poniższy kod XML przedstawia przykład zasad autoryzacji, które zostały określone w konfiguracji. W pierwszej zasadach podmiot zabezpieczeń musi posiadać jedno z określonych oświadczeń, aby wykonać określoną akcję dla określonego zasobu. W drugiej polityce podmiot zabezpieczeń musi posiadać oba oświadczenia, aby móc wykonać określoną akcję dla określonego zasobu. We wszystkich innych, podmiot zabezpieczeń jest automatycznie udzielany dostępu niezależnie od roszczeń, które posiada.
<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>
Uwagi
Klasa AuthorizationContext reprezentuje kontekst używany przez menedżera autoryzacji oświadczeń, implementację ClaimsAuthorizationManager klasy, aby określić, czy podmiot (podmiot) ma być autoryzowany do wykonywania określonej akcji dla danego zasobu. Menedżer autoryzacji oświadczeń ocenia kontekst autoryzacji w metodzie CheckAccess i odmawia dostępu lub udziela dostępu na podstawie oświadczeń przedstawionych przez podmiot zabezpieczeń.
Właściwość Principal zawiera podmiot zabezpieczeń, dla którego żądana jest autoryzacja, Resource właściwość zawiera zasób, na którym podmiot zabezpieczeń jest autoryzowany, a Action właściwość zawiera akcje, które podmiot zabezpieczeń zamierza wykonać na zasobie. Zarówno zasób, jak i akcja są reprezentowane jako kolekcja oświadczeń; jednak w większości przypadków każda kolekcja zawiera pojedyncze oświadczenie.
Konstruktory
| Nazwa | Opis |
|---|---|
| AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Inicjuje nowe wystąpienie klasy przy użyciu określonego podmiotu AuthorizationContext zabezpieczeń, oświadczenia zasobu i oświadczenia akcji. |
| AuthorizationContext(ClaimsPrincipal, String, String) |
Inicjuje nowe wystąpienie AuthorizationContext klasy z określoną nazwą podmiotu zabezpieczeń, nazwą zasobu i nazwą akcji. |
Właściwości
| Nazwa | Opis |
|---|---|
| Action |
Pobiera akcję, dla której podmiot zabezpieczeń ma być autoryzowany. |
| Principal |
Pobiera podmiot zabezpieczeń, dla którego żądana jest autoryzacja. |
| Resource |
Pobiera zasób, na którym podmiot zabezpieczeń ma być autoryzowany. |
Metody
| Nazwa | Opis |
|---|---|
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |