Freigeben über


ServiceAuthorizationManager Klasse

Definition

Bietet eine Überprüfung des Autorisierungszugriffs für Dienstvorgänge.

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

Beispiele

Das folgenden Beispiel zeigt eine Klasse mit dem Namen MyServiceAuthorizationManager, die von der ServiceAuthorizationManager-Methode erbt und die CheckAccessCore-Methode ü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 für das Auswerten aller Richtlinien (Regeln, die festlegen, wozu ein Benutzer berechtigt ist), für das Vergleichen der Richtlinien mit von Kunden gestellten Ansprüchen, für das Festlegen der resultierenden AuthorizationContext-Einstellung auf ServiceSecurityContext und für das Bereitstellen der Autorisierungsentscheidung (ob der Zugriff auf einen angegebenen Dienst oder einen Vorgang für einen Aufrufer gewährt wird oder nicht) verantwortlich.

Die CheckAccessCore -Methode wird bei jedem Versuch, auf eine Ressource zuzugreifen, von der Windows Communication Foundation -Infrastruktur (WCF) aufgerufen. Die Methode gibt true oder false zurück, um den Zugriff zu gewähren bzw. zu verweigern.

Ist ServiceAuthorizationManager Teil der WCFIdentity Model-Infrastruktur . Mit dem Identitätsmodell können Sie benutzerdefinierte Autorisierungsrichtlinien sowie benutzerdefinierte Schemata 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 aus und ermöglicht es Benutzern, auf alle Dienstvorgänge zuzugreifen. Für eine restriktivere Autorisierung müssen Sie einen benutzerdefinierten Autorisierungs-Manager erstellen, der benutzerdefinierte Richtlinien überprüft. Erben Sie hierzu von dieser Klasse, und überschreiben Sie die CheckAccessCore-Methode. Geben Sie die Instanz der abgeleiteten Klasse über die ServiceAuthorizationManager-Eigenschaft an.

In CheckAccessCore kann die Anwendung 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 vornehmen.

Ein Beispiel finden Sie unter Vorgehensweise: Erstellen eines benutzerdefinierten Autorisierungs-Managers für einen Dienst.

Um benutzerdefinierte Autorisierungsrichtlinien zu erstellen, implementieren Sie die IAuthorizationPolicy-Klasse. Ein Beispiel finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Autorisierungsrichtlinie.

Um einen benutzerdefinierte Anspruch zu erstellen, verwenden Sie die Claim-Klasse. Ein Beispiel finden Sie unter Vorgehensweise: Erstellen eines benutzerdefinierten Anspruchs. Um benutzerdefinierte Ansprüche zu vergleichen, müssen Sie Ansprüche vergleichen, wie unter Vorgehensweise: Vergleichen von Ansprüchen gezeigt.

Weitere Informationen finden Sie unter Benutzerdefinierte Autorisierung.

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

Konstruktoren

ServiceAuthorizationManager()

Initialisiert eine neue Instanz der ServiceAuthorizationManager-Klasse.

Methoden

CheckAccess(OperationContext)

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

CheckAccess(OperationContext, Message)

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

CheckAccessCore(OperationContext)

Überprüft die Autorisierung für den angegebenen Vorgangskontext auf Grundlage der Standardrichtlinienevaluierung.

Equals(Object)

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

(Geerbt von Object)
GetAuthorizationPolicies(OperationContext)

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

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:

Weitere Informationen