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 s názvem MyServiceAuthorizationManager , která dědí z ServiceAuthorizationManager 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 je zodpovědná za vyhodnocení všech zásad (pravidel, která definují, co uživatel může dělat), porovnání zásad s deklaracemi identity provedené klientem, nastavení výsledné AuthorizationContext hodnoty na ServiceSecurityContexta poskytnutí autorizačního rozhodnutí, 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 pro povolení nebo odepření přístupu.

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 identit funguje, najdete v tématu Správa deklarací identity a autorizace pomocí modelu identit.

Autorizace uživatele

Tato třída neprovádí žádnou autorizaci a umožňuje uživatelům přístup ke všem operacím služby. Pokud chcete zajistit přísnější autorizaci, musíte vytvořit vlastního správce autorizací, který kontroluje vlastní zásady. Chcete-li to provést, dědit z této třídy a přepsat metodu CheckAccessCore . Zadejte instanci odvozené třídy prostřednictvím ServiceAuthorizationManager vlastnosti.

V CheckAccessCoreaplikaci může aplikace použít OperationContext objekt pro přístup k identitě volajícího (ServiceSecurityContext).

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

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

Příklad najdete v tématu Postupy: Vytvoření vlastního správce autorizací 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.

K vytvoření vlastní deklarace 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 najdete v tématu Vlastní autorizace.

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

Konstruktory

ServiceAuthorizationManager()

Inicializuje novou instanci ServiceAuthorizationManager třídy.

Metody

CheckAccess(OperationContext)

Kontroluje autorizaci pro daný kontext operace.

CheckAccess(OperationContext, Message)

Kontroluje autorizaci pro daný kontext operace, když se vyžaduje přístup ke zprávě.

CheckAccessCore(OperationContext)

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

Equals(Object)

Určí, zda se zadaný objekt rovná 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í hashovací funkce.

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

Získá aktuální Type instanci.

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

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

(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é