ServiceAuthorizationManager Klasa

Definicja

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)

Dotyczy

Zobacz też