Procedura: creare un verificatore di identità client personalizzato
La funzionalità identità di Windows Communication Foundation (WCF) consente a un client di specificare in anticipo l'identità prevista del servizio. Ogni volta che un server esegue l'autenticazione al client, l'identità viene confrontata con l'identità prevista. Per una descrizione dell'identità e del relativo funzionamento, vedere Identità del servizio e autenticazione.
Se necessario, la verifica può essere personalizzata utilizzando un verificatore di identità personalizzato. È possibile, ad esempio, eseguire ulteriori controlli di verifica dell'identità del servizio. In questo esempio il verificatore di identità personalizzato verifica le attestazioni aggiuntive nel certificato X.509 restituito dal server. Per un'applicazione di esempio, vedere Identity.
Per estendere la classe EndpointIdentity
Definire una nuova classe che deriva dalla classe EndpointIdentity. Questo esempio attribuisce un nome all'estensione
OrgEndpointIdentity
.Aggiungere membri privati insieme a proprietà che verranno utilizzate dalla classe IdentityVerifier estesa per eseguire il controllo dell'identità rispetto alle attestazioni incluse nel token di protezione restituito dal servizio. Questo esempio definisce una proprietà, ovvero
OrganizationClaim
.
Per estendere la classe IdentityVerifier
Definire una nuova classe che deriva dall'interfaccia IdentityVerifier. Questo esempio attribuisce un nome all'estensione
CustomIdentityVerifier
.Eseguire l'override del metodo CheckAccess. Il metodo determina se il controllo dell'identità ha esito positivo o negativo.
Il metodo CheckAccess ha due parametri. Il primo è un'istanza della classe EndpointIdentity. Il secondo è un'istanza della classe AuthorizationContext.
Nell'implementazione del metodo, esaminare l'insieme di attestazioni restituito dalla proprietà ClaimSets della classe AuthorizationContext ed eseguire i controlli di autenticazione necessari. Questo esempio inizia cercando qualsiasi attestazione di tipo "Nome distinto" e confronta quindi il nome all'estensione della classe EndpointIdentity (
OrgEndpointIdentity
).
Per implementare il metodo TryGetIdentity
Implementare il metodo TryGetIdentity che determina se un'istanza della classe EndpointIdentity può essere restituita dal client. L'infrastruttura di WCF chiama prima l'implementazione del metodo TryGetIdentity per recuperare l'identità del servizio dal messaggio. L'infrastruttura chiama quindi l'implementazione CheckAccess con le classi EndpointIdentity e AuthorizationContext restituite.
Nel metodo TryGetIdentity inserire il seguente codice:
Per implementare un'associazione personalizzata e impostare il verificatore di identità personalizzato
Creare un metodo che restituisca un oggetto Binding. Questo esempio inizia con la creazione di un'istanza della classe WSHttpBinding e imposta la propria modalità di protezione su Messagee la propria proprietà ClientCredentialType su None.
Creare una classe BindingElementCollection utilizzando il metodo CreateBindingElements.
Restituire la classe SecurityBindingElement dall'insieme ed eseguirne il cast su una variabile SymmetricSecurityBindingElement.
Imposta la proprietà IdentityVerifier della classe LocalClientSecuritySettings su una nuova istanza della classe
CustomIdentityVerifier
creata precedentemente.L'associazione personalizzata restituita viene utilizzata per creare un'istanza del client e della classe. Il client può eseguire quindi un controllo di verifica dell'identità del servizio personalizzato, come illustrato nel codice seguente.
Esempio
Nell'esempio seguente viene illustrata un'implementazione completa della classe IdentityVerifier.
Nell'esempio seguente viene illustrata un'implementazione completa della classe EndpointIdentity.
Vedere anche
Riferimenti
ServiceAuthorizationManager
EndpointIdentity
IdentityVerifier
Altre risorse
Identity Sample
How To: Create a Custom AuthorizationManager on a Service
Authorization Policy Sample