Freigeben über


ServiceAuthorizationManager Klasse

Definition

Stellt die Autorisierungszugriffsüberprüfung für Dienstvorgänge bereit.

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

Beispiele

Das folgende Beispiel zeigt eine Klasse mit dem Namen MyServiceAuthorizationManager , die von der ServiceAuthorizationManagerCheckAccessCore Methode erbt und überschreibt.

public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
  protected override bool CheckAccessCore(OperationContext operationContext)
  {
    // Extract the action URI from the OperationContext. Match this against the claims
    // in the AuthorizationContext.
    string action = operationContext.RequestContext.RequestMessage.Headers.Action;
  
    // Iterate through the various claim sets in the AuthorizationContext.
    foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets)
    {
      // Examine only those claim sets issued by System.
      if (cs.Issuer == ClaimSet.System)
      {
        // Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
          foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty))
        {
          // If the Claim resource matches the action URI then return true to allow access.
          if (action == c.Resource.ToString())
            return true;
        }
      }
    }
  
    // If this point is reached, return false to deny access.
    return false;
  }
}

Public Class MyServiceAuthorizationManager
    Inherits ServiceAuthorizationManager
    
    Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean 
        ' Extract the action URI from the OperationContext. Match this against the claims.
        ' in the AuthorizationContext.
        Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
        
        ' Iterate through the various claimsets in the AuthorizationContext.
        Dim cs As ClaimSet
        For Each cs In  operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
            ' Examine only those claim sets issued by System.
            If cs.Issuer Is ClaimSet.System Then
                ' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
                Dim c As Claim
                For Each c In  cs.FindClaims("http://www.contoso.com/claims/allowedoperation", _
                     Rights.PossessProperty)
                    ' If the Claim resource matches the action URI then return true to allow access.
                    If action = c.Resource.ToString() Then
                        Return True
                    End If
                Next c
            End If
        Next cs 
        ' If this point is reached, return false to deny access.
        Return False
    
    End Function 
End Class

Hinweise

Diese Klasse ist verantwortlich für die Auswertung aller Richtlinien (Regeln, die definieren, was ein Benutzer tun darf), den Vergleich der Von einem Client vorgenommenen Richtlinien mit Ansprüchen, das Festlegen des resultierenden AuthorizationContext Werts ServiceSecurityContextund die Bereitstellung der Autorisierungsentscheidung, ob der Zugriff für einen bestimmten Dienstvorgang für einen Anrufer zugelassen oder verweigert werden soll.

Die CheckAccessCore Methode wird von der Windows Communication Foundation (WCF)-Infrastruktur jedes Mal aufgerufen, wenn versucht wird, auf eine Ressource zuzugreifen. Die Methode gibt true den Zugriff bzw. den Zugriff zurück oder false verweigert sie.

Dies ServiceAuthorizationManager ist Teil derWCF-Identitätsmodellinfrastruktur . Mit dem Identitätsmodell können Sie benutzerdefinierte Autorisierungsrichtlinien und benutzerdefinierte Autorisierungsschemas erstellen. Weitere Informationen zur Funktionsweise des Identitätsmodells finden Sie unter Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell.

Benutzerdefinierte Autorisierung

Diese Klasse führt keine Autorisierung durch und ermöglicht Benutzern den Zugriff auf alle Dienstvorgänge. Um eine restriktivere Autorisierung bereitzustellen, müssen Sie einen benutzerdefinierten Autorisierungs-Manager erstellen, der benutzerdefinierte Richtlinien überprüft. Erben Sie dazu von dieser Klasse, und überschreiben Sie die CheckAccessCore Methode. Geben Sie die Instanz der abgeleiteten Klasse über die ServiceAuthorizationManager Eigenschaft an.

In CheckAccessCore, die Anwendung kann das OperationContext Objekt verwenden, um auf die Aufruferidentität (ServiceSecurityContext) zuzugreifen.

Durch Abrufen der IncomingMessageHeaders Eigenschaft, die ein MessageHeaders Objekt zurückgibt, kann die Anwendung auf den Dienst (To) und den Vorgang (Action) zugreifen.

Durch Abrufen der RequestContext Eigenschaft, die ein RequestContext Objekt zurückgibt, kann die Anwendung auf die gesamte Anforderungsnachricht (RequestMessage) zugreifen und die Autorisierungsentscheidung entsprechend ausführen.

Ein Beispiel finden Sie unter How to: Create a Custom Authorization Manager for a Service.

Implementieren Sie die IAuthorizationPolicy Klasse, um benutzerdefinierte Autorisierungsrichtlinien zu erstellen. Ein Beispiel finden Sie unter How to: Create a Custom Authorization Policy.

Verwenden Sie die Claim Klasse, um einen benutzerdefinierten Anspruch zu erstellen. Ein Beispiel finden Sie unter How to: Create a Custom Claim. Um benutzerdefinierte Ansprüche zu vergleichen, müssen Sie Ansprüche vergleichen, wie in How to: Compare Claims gezeigt.

Weitere Informationen finden Sie unter "Benutzerdefinierte Autorisierung".

Sie können den Typ eines benutzerdefinierten Autorisierungs-Managers mithilfe der <ServiceAuthorization> in einer Clientanwendungskonfigurationsdatei festlegen.

Konstruktoren

Name Beschreibung
ServiceAuthorizationManager()

Initialisiert eine neue Instanz der ServiceAuthorizationManager-Klasse.

Methoden

Name Beschreibung
CheckAccess(OperationContext, Message)

Überprüft die Autorisierung für den angegebenen Vorgangskontext, wenn der Zugriff auf eine Nachricht erforderlich ist.

CheckAccess(OperationContext)

Überprüft die Autorisierung für den angegebenen Vorgangskontext.

CheckAccessCore(OperationContext)

Überprüft die Autorisierung für den angegebenen Vorgangskontext basierend auf der Standardrichtlinienauswertung.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetAuthorizationPolicies(OperationContext)

Ruft den Satz von Richtlinien ab, die an der Richtlinienauswertung teilnehmen.

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)

Gilt für:

Weitere Informationen