Sdílet prostřednictvím


ServiceAuthorizationManager.CheckAccessCore(OperationContext) Metoda

Definice

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

protected:
 virtual bool CheckAccessCore(System::ServiceModel::OperationContext ^ operationContext);
protected virtual bool CheckAccessCore (System.ServiceModel.OperationContext operationContext);
abstract member CheckAccessCore : System.ServiceModel.OperationContext -> bool
override this.CheckAccessCore : System.ServiceModel.OperationContext -> bool
Protected Overridable Function CheckAccessCore (operationContext As OperationContext) As Boolean

Parametry

operationContext
OperationContext

Aktuální OperationContext žádost o autorizaci.

Návraty

Boolean

truepokud je udělen přístup; v opačném případě . false Výchozí formát je true.

Příklady

Následující příklad ukazuje přepsání CheckAccessCore metody.

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;
}
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

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

Poznámky

ServiceSecurityContext je obecně výsledkem výchozího vyhodnocení zásad.

Tuto metodu přepište tak, aby poskytovala vlastní rozhodnutí o autorizaci.

Tuto metodu lze použít k rozhodování o autorizaci na základě sad deklarací identity, které jsou odvozeny na základě příchozích tokenů nebo přidané prostřednictvím externích zásad autorizace. Může také rozhodovat o autorizaci na základě vlastností příchozí zprávy: například záhlaví akce.

V této metodě může aplikace použít operationContext parametr pro přístup k identitě volajícího (ServiceSecurityContext). Vrácením objektu RequestContext RequestContext z vlastnosti může aplikace získat přístup k celé zprávě požadavku (RequestMessage). Vrácením objektu MessageHeaders IncomingMessageHeaders z vlastnosti může aplikace získat přístup k adrese URL služby (To) a operaci (Action). S touto informací může aplikace odpovídajícím způsobem provádět rozhodnutí o autorizaci.

Deklarace identity provedené uživatelem jsou nalezeny ve ClaimSet vrácené ClaimSets vlastnosti .AuthorizationContext AuthorizationContext Aktuální je vrácen vlastností ServiceSecurityContext OperationContext třídy.

Platí pro