Sdílet prostřednictvím


ServiceAuthorizationManager Třída

Definice

Poskytuje kontrolu přístupu autorizace pro operace služby.

public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
Dědičnost
ServiceAuthorizationManager

Příklady

Následující příklad ukazuje třídu, MyServiceAuthorizationManager která dědí z ServiceAuthorizationManager metody a přepíše metodu 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

Poznámky

Tato třída zodpovídá za vyhodnocení všech zásad (pravidel definujících, co má uživatel povoleno dělat), porovnávání zásad s deklaracemi provedenými klientem, nastavení výsledku AuthorizationContextServiceSecurityContextna a poskytnutí rozhodnutí o autorizaci, zda povolit nebo odepřít přístup pro danou operaci služby volajícímu.

Metoda CheckAccessCore je volána infrastrukturou WCF (Windows Communication Foundation) při každém pokusu o přístup k prostředku. Metoda vrátí true nebo false zamítá přístup, v uvedeném pořadí.

Je ServiceAuthorizationManager součástí infrastrukturymodelu identit WCF. Model identit umožňuje vytvářet vlastní zásady autorizace a vlastní schémata autorizace. Další informace o tom, jak model identity funguje, najdete v tématu Správa deklarací identity a autorizace pomocí modelu identity.

Vlastní autorizace

Tato třída neprovádí žádnou autorizaci a umožňuje uživatelům přístup ke všem operacím služby. Pokud chcete poskytnout více omezující autorizaci, musíte vytvořit vlastního správce autorizace, který kontroluje vlastní zásady. Uděláte to tak, že zdědíte z této třídy a přepíšete metodu CheckAccessCore . Zadejte instanci odvozené třídy prostřednictvím ServiceAuthorizationManager vlastnosti.

Aplikace CheckAccessCoremůže objekt použít OperationContext pro přístup k identitě volajícího (ServiceSecurityContext).

Získáním IncomingMessageHeaders vlastnosti, která vrací MessageHeaders objekt, může aplikace přistupovat ke službě (To) a operaci (Action).

Získáním RequestContext vlastnosti, která vrací RequestContext objekt, může aplikace přistupovat k celé zprávě požadavku (RequestMessage) a odpovídajícím způsobem provádět rozhodnutí o autorizaci.

Příklad najdete v tématu Postupy: Vytvoření vlastního správce autorizace pro službu.

Pokud chcete vytvořit vlastní zásady autorizace, implementujte IAuthorizationPolicy třídu. Příklad najdete v tématu Postupy: Vytvoření vlastních zásad autorizace.

Pokud chcete vytvořit vlastní deklaraci identity, použijte Claim třídu. Příklad najdete v tématu Postupy: Vytvoření vlastní deklarace identity. Pokud chcete porovnat vlastní deklarace identity, musíte porovnat deklarace identity, jak je znázorněno v tématu Postupy: Porovnání deklarací identity.

Další informace naleznete v tématu Vlastní autorizace.

Typ vlastního správce autorizace můžete nastavit pomocí <serviceAuthorization> v konfiguračním souboru klientské aplikace.

Konstruktory

Name Description
ServiceAuthorizationManager()

Inicializuje novou instanci ServiceAuthorizationManager třídy.

Metody

Name Description
CheckAccess(OperationContext, Message)

Kontroluje autorizaci pro daný kontext operace, pokud je vyžadován přístup ke zprávě.

CheckAccess(OperationContext)

Kontroluje autorizaci pro daný kontext operace.

CheckAccessCore(OperationContext)

Kontroluje autorizaci pro daný kontext operace na základě výchozího vyhodnocení zásad.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetAuthorizationPolicies(OperationContext)

Získá sadu zásad, které se účastní vyhodnocení zásad.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také