Procedura: creare una credenziale di supporto
È possibile avere uno schema di protezione personalizzato che richiede più di una credenziale. Un servizio può, ad esempio, richiedere al cliente non solo nome utente e password, ma anche una credenziale che provi che il cliente ha superato i 18 anni. La seconda credenziale è una credenziale di supporto. In questo argomento viene illustrato come implementare tali credenziali in un client Windows Communication Foundation (WCF).
Nota
La specifica per le credenziali di supporto fa parte della specifica WS-SecurityPolicy. Per ulteriori informazioni, vedere https://go.microsoft.com/fwlink/? LinkId=88537 (il contenuto potrebbe essere in inglese).
Token di supporto
In breve, quando si utilizza la protezione dei messaggi, viene sempre utilizzata una credenziale primaria per proteggere il messaggio, ad esempio, un certificato X.509 o un ticket Kerberos.
Come definito dalla specifica, un'associazione di protezione utilizza token per proteggere lo scambio di messaggi. Un token è una rappresentazione di una credenziale di protezione.
L'associazione di protezione utilizza un token primario identificato nei criteri dell'associazione di protezione per creare una firma. Questa firma viene definita firma del messaggio.
È possibile specificare token aggiuntivi per aumentare le attestazioni fornite dal token associato alla firma del messaggio.
Verifica dell'autenticità, firma e crittografia
Una credenziale di supporto produce un token di supporto trasmesso all'interno del messaggio. La specifica WS-SecurityPolicy definisce quattro modalità per allegare un token di supporto al messaggio, come descritto nella tabella seguente.
Scopo | Descrizione |
---|---|
Firmato |
Il token di supporto viene incluso nell'intestazione di protezione e viene firmato con la firma del messaggio. |
Verifica dell'autenticità |
Un token di verifica dell'autenticità firma la firma del messaggio. |
Firmato e di verifica dell'autenticità |
I token di verifica dell'autenticità firmati firmano l'intero elemento ds:Signature prodotto dalla firma del messaggio e sono essi stessi firmati con la firma del messaggio; ovvero, entrambi i token, quello utilizzato per la firma del messaggio e quello di verifica dell'autenticità firmato, si firmano l'un l'altro. |
Firmato e di crittografia |
I token di supporto crittografati firmati sono token di supporto firmati che vengono anche crittografati quando sono presenti in wsse:SecurityHeader. |
Programmazione di credenziali di supporto
Per creare un servizio che utilizza token di supporto, è necessario creare un customBinding Element. (Per ulteriori informazioni, vedere Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement.)
Quando si crea un'associazione personalizzata, il primo passaggio consiste nel creare un elemento di associazione di protezione che può essere di uno dei tre tipi seguenti:
Tutte le classi ereditano da SecurityBindingElement, che include quattro proprietà rilevanti:
- EndpointSupportingTokenParameters
- OperationSupportingTokenParameters
- OptionalEndpointSupportingTokenParameters
- OptionalOperationSupportingTokenParameters
Ambiti
Esistono due ambiti per le credenziali di supporto:
- I token di supporto endpoint supportano tutte le operazioni di un endpoint. In altre parole, la credenziale rappresentata dal token di supporto può essere utilizzata ogni volta che vengono richiamate le operazioni di un endpoint.
- I token di supporto operazioni supportano solo una specifica operazione dell'endpoint.
Come indicato dai nomi delle proprietà, le credenziali di supporto possono essere obbligatorie o facoltative. In altre parole, se la credenziale di supporto viene utilizzata se presente, anche se non necessaria, l'autenticazione non avrà esito negativo se la credenziale non è presente.
Procedure
Per creare un'associazione personalizzata che includa credenziali di supporto
Creare un elemento di associazione di protezione. Nell'esempio seguente viene creata una classe SymmetricSecurityBindingElement con la modalità di autenticazione UserNameForCertificate. Utilizzare il metodo CreateUserNameForCertificateBindingElement.
Aggiungere il parametro di supporto all'insieme dei tipi restituito dalla proprietà appropriata (Endorsing, Signed, SignedEncrypted o SignedEndorsed). I tipi nello spazio dei nomi System.ServiceModel.Security.Tokens includono tipi comunemente utilizzati, ad esempio X509SecurityTokenParameters.
Esempio
Descrizione
Nell'esempio seguente viene creata un'istanza della classe SymmetricSecurityBindingElement e viene aggiunta un'istanza della classe KerberosSecurityTokenParameters all'insieme della proprietà Endorsing restituita.
Codice
Vedere anche
Concetti
Procedura: creare un'associazione personalizzata utilizzando SecurityBindingElement