Freigeben über


AuthorizationContext Klasse

Definition

Stellt Kontextinformationen eines Autorisierungsereignisses bereit. Dies umfasst auch den Prinzipal, der den Aufrufer darstellt, die angeforderte Ressource und die Aktion, die ausgeführt wird.

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
Vererbung
AuthorizationContext

Beispiele

Das Codebeispiel, das AuthorizationContext im Thema verwendet wird, stammt aus dem Claims Based Authorization Beispiel. Dieses Beispiel stellt einen benutzerdefinierten Anspruchsautorisierungs-Manager bereit, der Subjekte basierend auf einer richtlinie autorisieren kann, die in der Konfiguration angegeben ist. Dieser benutzerdefinierte Manager besteht aus drei grundlegenden Komponenten: einer von ClaimsAuthorizationManager abgeleiteten Klasse, die den Manager implementiert, der Klasse, die ResourceAction eine Ressource und eine Aktion koppelt, und einem Richtlinienleser, der die in der Konfigurationsdatei angegebene Richtlinie liest und kompiliert. 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 der Kürze halber angezeigt. Informationen zu diesem Beispiel und anderen für WIF verfügbaren Beispielen und zu deren Downloadmöglichkeiten finden Sie unter WIF-Codebeispielindex.

Der folgende Code zeigt die CheckAccess -Methode für den benutzerdefinierten Anspruchsautorisierungs-Manager. Eine Funktion, die den Prinzipal basierend auf der ressource und aktion auswertet, die in angegeben ist, AuthorizationContext wird aufgerufen. Diese Funktion gibt entweder true oder falsezurück, wodurch der Zugriff auf den Prinzipal gewährt oder verweigert wird.

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 der 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 (Antragsteller) zum Ausführen einer angegebenen Aktion für eine bestimmte Ressource autorisiert werden soll. Der Anspruchsautorisierungs-Manager wertet den Autorisierungskontext in der CheckAccess -Methode aus und verweigert den Zugriff basierend auf den vom Prinzipal vorgelegten Ansprüchen oder gewährt diesen.

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

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, Ressourcenname und Aktionsname.

Eigenschaften

Action

Ruft die Aktion ab, für die der Prinzipal berechtigt werden soll.

Principal

Ruft den Prinzipal ab (subject), für den Autorisierung angefordert wird.

Resource

Ruft die Ressource ab, auf die der Prinzipal berechtigt werden soll.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: