ServiceAuthorizationManager.CheckAccessCore(OperationContext) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Sprawdza autoryzację dla danego kontekstu operacji na podstawie domyślnej oceny zasad.
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
Element OperationContext dla bieżącego żądania autoryzacji.
Zwraca
true
w przypadku udzielenia dostępu; w przeciwnym razie , false
. Wartość domyślna to true
.
Przykłady
W poniższym przykładzie przedstawiono przesłonięcia 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
Inny przykład można znaleźć w temacie How to: Create a Custom Authorization Manager for a Service (Instrukcje: tworzenie niestandardowego menedżera autoryzacji dla usługi).
Uwagi
ServiceSecurityContext jest to zazwyczaj wynik oceny zasad domyślnych.
Zastąpij tę metodę, aby zapewnić niestandardowe decyzje dotyczące autoryzacji.
Ta metoda może służyć do podejmowania decyzji dotyczących autoryzacji na podstawie zestawów oświadczeń, które są wnioskowane na podstawie tokenów przychodzących lub dodawane za pośrednictwem zasad autoryzacji zewnętrznej. Może również podejmować decyzje dotyczące autoryzacji na podstawie właściwości komunikatu przychodzącego: na przykład nagłówka akcji.
W tej metodzie aplikacja może użyć parametru operationContext
w celu uzyskania dostępu do tożsamości wywołującej (ServiceSecurityContext). Zwracając RequestContext obiekt z właściwości , aplikacja może uzyskać dostęp do całego komunikatu RequestContext żądania (RequestMessage). Zwracając MessageHeaders obiekt z IncomingMessageHeaders właściwości, aplikacja może uzyskać dostęp do adresu URL usługi (To) i operacji (Action). Dzięki tym informacjom aplikacja może odpowiednio podjąć decyzję o autoryzacji.
Oświadczenia złożone przez użytkownika znajdują się w ClaimSet obiekcie zwróconym przez ClaimSets właściwość AuthorizationContext
. Bieżący AuthorizationContext
element jest zwracany przez ServiceSecurityContext właściwość OperationContext klasy .