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