ServiceAuthorizationManager Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia sprawdzanie dostępu do autoryzacji dla operacji usługi.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Dziedziczenie
-
ServiceAuthorizationManager
Przykłady
W poniższym przykładzie pokazano klasę o nazwie MyServiceAuthorizationManager
, która dziedziczy po metodzie ServiceAuthorizationManager i zastępuje metodę CheckAccessCore .
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
Uwagi
Ta klasa jest odpowiedzialna za ocenę wszystkich zasad (reguł definiujących, co użytkownik może zrobić), porównując zasady z oświadczeniami wykonanymi przez klienta, ustawiając wynikową AuthorizationContextServiceSecurityContextdla elementu i podając decyzję autoryzacji, czy zezwolić na dostęp dla danej operacji usługi dla obiektu wywołującego, czy go odmówić.
Metoda CheckAccessCore jest wywoływana przez infrastrukturę windows Communication Foundation (WCF) za każdym razem, gdy następuje próba uzyskania dostępu do zasobu. Metoda zwraca true
lub false
zezwala odpowiednio na dostęp lub go odmawia.
Element ServiceAuthorizationManager jest częścią infrastrukturymodelu tożsamości WCF. Model tożsamości umożliwia tworzenie niestandardowych zasad autoryzacji i niestandardowych schematów autoryzacji. Aby uzyskać więcej informacji na temat sposobu działania modelu tożsamości, zobacz Zarządzanie oświadczeniami i autoryzacją za pomocą modelu tożsamości.
Autoryzacja niestandardowa
Ta klasa nie wykonuje autoryzacji i umożliwia użytkownikom dostęp do wszystkich operacji usługi. Aby zapewnić bardziej restrykcyjną autoryzację, należy utworzyć niestandardowego menedżera autoryzacji, który sprawdza zasady niestandardowe. W tym celu dziedzicz z tej klasy i przesłaniaj metodę CheckAccessCore . Określ wystąpienie klasy pochodnej ServiceAuthorizationManager za pomocą właściwości .
W CheckAccessCoresystemie aplikacja może używać OperationContext obiektu w celu uzyskania dostępu do tożsamości wywołującej (ServiceSecurityContext).
Po otrzymaniu IncomingMessageHeaders właściwości, która zwraca MessageHeaders obiekt, aplikacja może uzyskać dostęp do usługi (To) i operacji (Action).
Po otrzymaniu RequestContext właściwości, która zwraca RequestContext obiekt, aplikacja może uzyskać dostęp do całego komunikatu żądania (RequestMessage) i odpowiednio podjąć decyzję o autoryzacji.
Przykład można znaleźć w temacie How to: Create a Custom Authorization Manager for a Service (Instrukcje: tworzenie niestandardowego menedżera autoryzacji dla usługi).
Aby utworzyć niestandardowe zasady autoryzacji, zaimplementuj klasę IAuthorizationPolicy . Przykład można znaleźć w temacie How to: Create a Custom Authorization Policy (Instrukcje: tworzenie niestandardowych zasad autoryzacji).
Aby utworzyć oświadczenie niestandardowe, użyj Claim klasy . Przykład można znaleźć w temacie How to: Create a Custom Claim (Instrukcje: tworzenie oświadczenia niestandardowego). Aby porównać oświadczenia niestandardowe, należy porównać oświadczenia, jak pokazano w temacie Instrukcje: porównywanie oświadczeń.
Aby uzyskać więcej informacji, zobacz Autoryzacja niestandardowa.
Typ niestandardowego menedżera autoryzacji można ustawić przy użyciu parametru< serviceAuthorization> w pliku konfiguracji aplikacji klienckiej.
Konstruktory
ServiceAuthorizationManager() |
Inicjuje nowe wystąpienie klasy ServiceAuthorizationManager. |
Metody
CheckAccess(OperationContext) |
Sprawdza autoryzację dla danego kontekstu operacji. |
CheckAccess(OperationContext, Message) |
Sprawdza autoryzację dla danego kontekstu operacji, gdy wymagany jest dostęp do komunikatu. |
CheckAccessCore(OperationContext) |
Sprawdza autoryzację dla danego kontekstu operacji na podstawie domyślnej oceny zasad. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetAuthorizationPolicies(OperationContext) |
Pobiera zestaw zasad, które uczestniczą w ocenie zasad. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |