Freigeben über


ServiceAuthorizationManager.CheckAccessCore(OperationContext) Methode

Definition

Überprüft die Autorisierung für den angegebenen Vorgangskontext basierend auf der Standardrichtlinienauswertung.

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

Parameter

operationContext
OperationContext

Die OperationContext für die aktuelle Autorisierungsanforderung.

Gibt zurück

truewenn Der Zugriff gewährt wird; andernfalls . false Der Standardwert lautet true.

Beispiele

Das folgende Beispiel zeigt eine Außerkraftsetzung der CheckAccessCore Methode.

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

Ein weiteres Beispiel finden Sie unter How to: Create a Custom Authorization Manager for a Service.

Hinweise

ServiceSecurityContext ist im Allgemeinen das Ergebnis der Standardrichtlinienauswertung.

Überschreiben Sie diese Methode, um benutzerdefinierte Autorisierungsentscheidungen bereitzustellen.

Diese Methode kann verwendet werden, um Autorisierungsentscheidungen basierend auf Anspruchssätzen zu treffen, die basierend auf eingehenden Token abgeleitet oder über externe Autorisierungsrichtlinien hinzugefügt werden. Es kann auch Autorisierungsentscheidungen basierend auf den Eigenschaften der eingehenden Nachricht treffen: z. B. der Aktionskopf.

In dieser Methode kann die Anwendung den operationContext Parameter verwenden, um auf die Aufruferidentität (ServiceSecurityContext) zuzugreifen. Durch zurückgeben des RequestContext Objekts aus der RequestContext Eigenschaft kann die Anwendung auf die gesamte Anforderungsnachricht (RequestMessage) zugreifen. Durch zurückgeben des MessageHeaders Objekts aus der IncomingMessageHeaders Eigenschaft kann die Anwendung auf die Dienst-URL (To) und den Vorgang (Action) zugreifen. Mit diesen Informationen kann die Anwendung die Autorisierungsentscheidung entsprechend durchführen.

Die Ansprüche eines Benutzers werden in der ClaimSet von der ClaimSets Eigenschaft der .AuthorizationContext Der Aktuelle AuthorizationContext wird von der ServiceSecurityContext Eigenschaft der OperationContext Klasse zurückgegeben.

Gilt für: