ServiceAuthorizationManager Classe
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.
Fornisce il controllo dell'accesso di autorizzazione per le operazioni del servizio.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Ereditarietà
-
ServiceAuthorizationManager
Esempio
Nell'esempio seguente viene illustrata una classe denominata MyServiceAuthorizationManager che eredita da e esegue l'override ServiceAuthorizationManager del CheckAccessCore metodo .
public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
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;
}
}
Public Class MyServiceAuthorizationManager
Inherits ServiceAuthorizationManager
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
End Class
Commenti
Questa classe è responsabile della valutazione di tutti i criteri (regole che definiscono le operazioni consentite a un utente), confrontando i criteri con le attestazioni effettuate da un client, impostando il risultato AuthorizationContext su ServiceSecurityContexte fornendo la decisione di autorizzazione se consentire o negare l'accesso per una determinata operazione del servizio per un chiamante.
Il CheckAccessCore metodo viene chiamato dall'infrastruttura di Windows Communication Foundation (WCF) ogni volta che viene effettuato un tentativo di accesso a una risorsa. Il metodo restituisce true o false per consentire o negare l'accesso, rispettivamente.
Fa ServiceAuthorizationManager parte dell'infrastruttura delmodello di identità WCF. Il modello di identità consente di creare criteri di autorizzazione personalizzati e schemi di autorizzazione personalizzati. Per altre informazioni sul funzionamento del modello di identità, vedere Gestione delle attestazioni e dell'autorizzazione con il modello di identità.
Autorizzazione personalizzata
Questa classe non esegue alcuna autorizzazione e consente agli utenti di accedere a tutte le operazioni del servizio. Per fornire un'autorizzazione più restrittiva, è necessario creare un gestore autorizzazioni personalizzato che controlla i criteri personalizzati. A tale scopo, ereditare da questa classe ed eseguire l'override del CheckAccessCore metodo . Specificare l'istanza della classe derivata tramite la ServiceAuthorizationManager proprietà .
In CheckAccessCorel'applicazione può usare l'oggetto OperationContext per accedere all'identità del chiamante (ServiceSecurityContext).
Recuperando la IncomingMessageHeaders proprietà , che restituisce un MessageHeaders oggetto , l'applicazione può accedere al servizio (To) e all'operazione (Action).
Recuperando la RequestContext proprietà , che restituisce un RequestContext oggetto , l'applicazione può accedere all'intero messaggio di richiesta (RequestMessage) ed eseguire di conseguenza la decisione di autorizzazione.
Per un esempio, vedere Procedura: Creare una gestione autorizzazioni personalizzata per un servizio.
Per creare criteri di autorizzazione personalizzati, implementare la IAuthorizationPolicy classe . Per un esempio, vedere Procedura: Creare criteri di autorizzazione personalizzati.
Per creare un'attestazione personalizzata, usare la Claim classe . Per un esempio, vedere Procedura: Creare un'attestazione personalizzata. Per confrontare attestazioni personalizzate, è necessario confrontare le attestazioni, come illustrato in Procedura: Confrontare attestazioni.
Per altre informazioni, vedere Autorizzazione personalizzata.
È possibile impostare il tipo di un gestore autorizzazioni personalizzato usando serviceAuthorization<> in un file di configurazione dell'applicazione client.
Costruttori
| Nome | Descrizione |
|---|---|
| ServiceAuthorizationManager() |
Inizializza una nuova istanza della classe ServiceAuthorizationManager. |
Metodi
| Nome | Descrizione |
|---|---|
| CheckAccess(OperationContext, Message) |
Controlla l'autorizzazione per il contesto dell'operazione specificato quando è necessario l'accesso a un messaggio. |
| CheckAccess(OperationContext) |
Controlla l'autorizzazione per il contesto dell'operazione specificato. |
| CheckAccessCore(OperationContext) |
Controlla l'autorizzazione per il contesto dell'operazione specificato in base alla valutazione dei criteri predefinita. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetAuthorizationPolicies(OperationContext) |
Ottiene il set di criteri che partecipano alla valutazione dei criteri. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |