ServiceAuthorizationManager.CheckAccessCore(OperationContext) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überprüft die Autorisierung für den angegebenen Vorgangskontext auf Grundlage der Standardrichtlinienevaluierung.
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
OperationContext für die aktuelle Autorisierungsanforderung.
Gibt zurück
true
, wenn der Zugriff gewährt wird, andernfalls false
. Der Standardwert ist true
.
Beispiele
Das folgende Beispiel zeigt das Außerkraftsetzen 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 Vorgehensweise: Erstellen eines benutzerdefinierten Autorisierungs-Managers für einen Dienst.
Hinweise
ServiceSecurityContext ist im Allgemeinen das Ergebnis der Standardrichtlinienevaluierung.
Überschreiben Sie diese Methode, um benutzerdefinierte Autorisierungsentscheidungen bereitzustellen.
Diese Methode kann verwendet werden, um Autorisierungsentscheidungen basierend auf Anspruchssätzen zu treffen, die auf Grundlage eingehender Token abgeleitet oder durch externe Autorisierungsrichtlinien hinzugefügt werden. Es können auch Autorisierungsentscheidungen basierend auf Eigenschaften der eingehenden Nachricht getroffen werden, z. B. basierend auf dem Aktionsheader.
In dieser Methode kann die Anwendung den operationContext
-Parameter verwenden, um auf die Aufruferidentität (ServiceSecurityContext) zuzugreifen. Durch Zurückgeben des RequestContext-Objekts von der RequestContext-Eigenschaft kann die Anwendung auf die gesamte Anforderungsnachricht (RequestMessage) zugreifen. Durch Zurückgeben des MessageHeaders-Objekts von 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 ausführen.
Die von einem Benutzer gestellten Ansprüche werden in der von der ClaimSet-Eigenschaft von ClaimSets zurückgegebenen AuthorizationContext
-Einstellung abgelegt. Die aktuelle AuthorizationContext
-Einstellung wird von der ServiceSecurityContext-Eigenschaft der OperationContext-Klasse zurückgegeben.