Procedura: confrontare le attestazioni
Per l'esecuzione dei controlli di autorizzazione viene utilizzata l'infrastruttura del modello di identità di Windows Communication Foundation (WCF). Un'attività comune consiste quindi nel confrontare le attestazioni presenti nel contesto di autorizzazione con le attestazioni necessarie per eseguire l'azione richiesta o accedere alla risorsa richiesta. In questo argomento viene illustrato come confrontare le attestazioni, compresi i tipi di attestazione incorporati e personalizzati. Per ulteriori informazioni sull'infrastruttura del modello di identità, vedere Gestione di attestazioni e autorizzazioni con il modello di identità.
Questa operazione implica il confronto delle tre parti di un'attestazione (tipo, diritto e risorsa) con le stesse parti di un'altra attestazione per verificarne la corrispondenza. Ad esempio, date due attestazioni Name
:
entrambe le attestazioni avranno un tipo Name, un diritto PossessProperty e una risorsa "someone." Poiché tutte le tre parti delle attestazioni sono uguali, le attestazioni sono uguali.
I tipi di attestazione incorporati vengono confrontati utilizzando il metodo Equals. Il codice di confronto specifico dell'attestazione viene utilizzato laddove necessario. Ad esempio, date le due attestazioni del nome dell'entità utente (UPN) seguenti:
il codice di confronto nel metodo Equals restituisce true, presupponendo che example\someone
identifichi lo stesso utente del dominio di "someone@example.com."
Anche i tipi di attestazione personalizzati possono essere confrontati utilizzando il metodo Equals. Tuttavia, nei casi in cui il tipo restituito dalla proprietà Resource dell'attestazione non è un tipo primitivo, il metodo Equals restituisce true solo se i valori restituiti dalle proprietà Resource sono uguali in base al metodo Equals. Negli altri casi, il tipo personalizzato restituito dalla proprietà Resource deve eseguire l'override dei metodi Equals e GetHashCode per eseguire qualsiasi elaborazione personalizzata necessaria.
Confronto di attestazioni incorporate
- Date due istanze della classe Claim, utilizzare il metodo Equals per eseguire il confronto, come illustrato nel codice seguente.
Confronto di attestazioni personalizzate con tipi di risorsa primitivi
Per le attestazioni personalizzate con tipi di risorsa primitivi, è possibile eseguire il confronto come per le attestazioni incorporate, come illustrato nel codice seguente.
Per attestazioni personalizzate con tipi di risorsa basati su strutture o su classi, il tipo di risorsa deve eseguire l'override del metodo Equals.
Controllare innanzitutto se il parametro obj è null e, in caso affermativo, restituire false.
Quindi chiamare il metodo ReferenceEquals passando this e obj come parametri. Se viene restituito true, restituire true.
Tentare di assegnare il parametro obj a una variabile locale del tipo di classe. In caso di errore, il riferimento è null. In tali casi, restituire false.
Eseguire il confronto personalizzato necessario per confrontare correttamente l'attestazione attuale con quella fornita.
Esempio
Nell'esempio seguente viene illustrato un confronto di attestazioni personalizzate in cui la risorsa dell'attestazione è un tipo non primitivo.
Vedere anche
Attività
Procedura: creare un'attestazione personalizzata
Concetti
Gestione di attestazioni e autorizzazioni con il modello di identità