AuthorizationContext Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Kontextinformationen eines Autorisierungsereignisses bereit. Dazu gehört der Prinzipal, der den Aufrufer, die angeforderte Ressource und die auszuführende Aktion darstellt.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Vererbung
-
AuthorizationContext
Beispiele
Das Codebeispiel, das im AuthorizationContext Thema verwendet wird, stammt aus dem Claims Based Authorization Beispiel. Dieses Beispiel enthält einen benutzerdefinierten Anspruchsautorisierungs-Manager, der Subjekte basierend auf einer in der Konfiguration angegebenen Richtlinie autorisieren kann. Dieser benutzerdefinierte Manager besteht aus drei grundlegenden Komponenten: einer Klasse, die vom ClaimsAuthorizationManager Manager abgeleitet wird, der Klasse, die ResourceAction eine Ressource und eine Aktion koppelt, und einen Richtlinienleser, der richtlinienleset und kompiliert, die in der Konfigurationsdatei angegeben ist. Diese kompilierte Richtlinie kann dann vom Anspruchsautorisierungs-Manager verwendet werden, um einen Prinzipal auszuwerten, um den Zugriff auf Ressourcen zu autorisieren. Nicht alle Elemente werden aus Platzgründen angezeigt. Informationen zu diesem Beispiel und anderen Beispielen, die für WIF verfügbar sind und wo sie heruntergeladen werden sollen, finden Sie unter WIF Code Sample Index.
Der folgende Code zeigt die CheckAccess Methode für den benutzerdefinierten Anspruchsautorisierungs-Manager. Eine Funktion, die den Prinzipal basierend auf der im AuthorizationContext Aufruf angegebenen Ressource und Aktion auswertet. Diese Funktion gibt entweder true oder false, die den Zugriff auf den Prinzipal gewährt oder verweigert.
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;
}
}
Der folgende XML-Code zeigt ein Beispiel für die Autorisierungsrichtlinie, die in der Konfiguration angegeben wurde. In der ersten Richtlinie muss der Prinzipal über einen der angegebenen Ansprüche verfügen, um die angegebene Aktion für die angegebene Ressource auszuführen. In der zweiten Richtlinie muss der Prinzipal über beide Ansprüche verfügen, um die angegebene Aktion für die angegebene Ressource ausführen zu können. In allen anderen Wird dem Prinzipal automatisch Zugriff gewährt, unabhängig von den ansprüchen, die er besitzt.
<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>
Hinweise
Die AuthorizationContext Klasse stellt den Kontext dar, der von einem Anspruchsautorisierungs-Manager, einer Implementierung der ClaimsAuthorizationManager Klasse, verwendet wird, um zu bestimmen, ob ein Prinzipal (Betreff) berechtigt sein soll, eine bestimmte Aktion für eine bestimmte Ressource auszuführen. Der Anspruchsautorisierungs-Manager wertet den Autorisierungskontext in der CheckAccess Methode aus und verweigert oder gewährt Zugriff basierend auf den vom Prinzipal vorgelegten Ansprüchen.
Die Principal Eigenschaft enthält den Prinzipal, für den die Autorisierung angefordert wird, die Resource Eigenschaft die Ressource, für die der Prinzipal autorisiert wird, und die Action Eigenschaft enthält die Aktionen, die der Prinzipal für die Ressource ausführen möchte. Sowohl die Ressource als auch die Aktion werden als Sammlung von Ansprüchen dargestellt; In den meisten Fällen enthält jede Sammlung jedoch einen einzelnen Anspruch.
Konstruktoren
| Name | Beschreibung |
|---|---|
| AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Initialisiert eine neue Instanz der AuthorizationContext Klasse mit dem angegebenen Prinzipal, Ressourcenanspruch und Aktionsanspruch. |
| AuthorizationContext(ClaimsPrincipal, String, String) |
Initialisiert eine neue Instanz der AuthorizationContext Klasse mit dem angegebenen Prinzipal, ressourcennamen und Aktionsnamen. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Action |
Ruft die Aktion ab, für die der Prinzipal autorisiert werden soll. |
| Principal |
Ruft den Prinzipal (Betreff) ab, für den die Autorisierung angefordert wird. |
| Resource |
Ruft die Ressource ab, für die der Prinzipal autorisiert werden soll. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |