ServiceAuthorizationManager 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.
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
- ClaimSet
- Claim
- Benutzerdefinierte Autorisierung
- Vorgehensweise: Erstellen eines benutzerdefinierten AuthorizationManagers für einen Dienst
- Vorgehensweise: Erstellen einer benutzerdefinierten Autorisierungsrichtlinie
- Vorgehensweise: Erstellen eines benutzerdefinierten Anspruchs
- Vorgehensweise: Vergleichen von Ansprüchen