ServiceAuthorizationManager.CheckAccessCore(OperationContext) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Controlla l'autorizzazione per il contesto dell'operazione specificato in base alla valutazione dei criteri predefinita.
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
Parametri
- operationContext
- OperationContext
Oggetto OperationContext per la richiesta di autorizzazione corrente.
Restituisce
true se viene concesso l'accesso; in caso contrario, false. Il valore predefinito è true.
Esempio
Nell'esempio seguente viene illustrato un override del CheckAccessCore metodo .
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
Per un altro esempio, vedere Procedura: Creare una gestione autorizzazioni personalizzata per un servizio.
Commenti
ServiceSecurityContext è in genere il risultato della valutazione dei criteri predefinita.
Eseguire l'override di questo metodo per fornire decisioni di autorizzazione personalizzate.
Questo metodo può essere usato per prendere decisioni di autorizzazione basate su set di attestazioni dedotti in base ai token in ingresso o aggiunti tramite criteri di autorizzazione esterni. Può anche prendere decisioni di autorizzazione in base alle proprietà del messaggio in arrivo, ad esempio l'intestazione dell'azione.
In questo metodo l'applicazione può usare il operationContext parametro per accedere all'identità del chiamante (ServiceSecurityContext). Restituendo l'oggetto RequestContext dalla RequestContext proprietà , l'applicazione può accedere all'intero messaggio di richiesta (RequestMessage). Restituendo l'oggetto MessageHeaders dalla IncomingMessageHeaders proprietà , l'applicazione può accedere all'URL del servizio (To) e all'operazione (Action). Con queste informazioni, l'applicazione può eseguire di conseguenza la decisione di autorizzazione.
Le attestazioni effettuate da un utente vengono trovate nell'oggetto ClaimSet restituito dalla ClaimSets proprietà dell'oggetto AuthorizationContext. L'oggetto corrente AuthorizationContext viene restituito dalla ServiceSecurityContext proprietà della OperationContext classe .