Procedura: impostare la modalità di protezione
Il sistema di protezione di Windows Communication Foundation (WCF) presenta tre modalità di protezione in genere disponibili nella maggior parte delle associazioni predefinite: a livello di trasporto ("Transport"), a livello di messaggio ("Message") e "Trasporto con credenziale a livello di messaggio" ("TransportWithMessageCredential"). Esistono inoltre due modalità aggiuntive disponibili soltanto in due associazioni specifiche: la modalità "Solo credenziale a livello di trasporto" ("TransportCredentialOnly") dell'associazione BasicHttpBinding e la modalità "Entrambi" ("Both") dell'associazione NetMsmqBinding. Tuttavia, questo argomento descrive solo le tre modalità di protezione generali, ovvero: Transport, Message e TransportWithMessageCredential.
Si noti che non tutte le associazioni predefinite supportano queste modalità. Questo argomento descrive come utilizzare le classi WSHttpBinding e NetTcpBinding per impostare la modalità, sia a livello di programmazione sia in configurazione.
Per ulteriori informazioni sul sistema di sicurezza di WCF, vedere Cenni preliminari sulla protezione, Protezione dei servizi e Protezione di servizi e client. Per ulteriori informazioni sulla sicurezza di trasporti e messaggi, vedere rispettivamente Protezione del trasporto e Protezione dei messaggi in WCF.
Per impostare la modalità di protezione in codice
Creare un'istanza della classe di associazione in uso. Per un elenco di associazioni predefinite, vedere Associazioni fornite dal sistema. In questo esempio viene creata un'istanza della classe WSHttpBinding
Impostare la proprietà Mode dell'oggetto restituito dalla proprietà Security.
In alternativa, impostare la modalità su "Message", come mostrato nel codice seguente.
In alternativa, impostare la modalità su "TransportWithMessageCredential", come mostrato nel codice seguente.
La modalità può anche essere impostata nel costruttore dell'associazione, come mostrato nel codice seguente.
Impostazione della proprietà ClientCredentialType
L'impostazione della modalità su uno dei tre valori determina il valore su cui impostare la proprietà che specifica il tipo di credenziale client, ovvero ClientCredentialType. Ad esempio, se si utilizza la classe WSHttpBinding e si imposta la modalità su Transport, occorre impostare la proprietà ClientCredentialType della classe HttpTransportSecurity su un valore appropriato.
Per impostare la proprietà ClientCredentialType quando si imposta la modalità "Transport"
Creare un'istanza dell'associazione.
Impostare la proprietà Mode su Transport.
Impostare la proprietà ClientCredential su un valore appropriato. Nell'esempio di codice seguente la proprietà viene impostata su Windows.
Per impostare la proprietà ClientCredentialType quando si imposta la modalità "Message"
Creare un'istanza dell'associazione.
Impostare la proprietà Mode su Message.
Impostare la proprietà ClientCredential su un valore appropriato. Nell'esempio di codice seguente la proprietà viene impostata su Certificate.
Per impostare la modalità e la proprietà ClientCredentialType in configurazione
Aggiungere un elemento di associazione appropriato all'elemento <bindings> del file di configurazione. Nell'esempio seguente viene aggiunto un elemento <wsHttpBinding>.
Aggiungere un elemento
<binding>
e impostare il relativo attributo name su un valore appropriato.Aggiungere un elemento
<security>
e impostare l'attributo mode su Message, Transport oppure TransportWithMessageCredential.Se si imposta la modalità su Transport, aggiungere un elemento
<transport>
e impostare l'attributo clientCredential su un valore appropriato.Nell'esempio seguente, la modalità viene impostata su "
Transport"
, quindi l'attributoclientCredentialType
dell'elemento<transport>
viene impostato su "Windows"
.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" /> <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
In alternativa, impostare la
security mode
su "Message"
seguita da un elemento<"message">
. In questo esempio l'attributoclientCredentialType
viene impostato su "Certificate
".<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" /> <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
L'utilizzo del valore TransportWithMessageCredential rappresenta un caso speciale e viene spiegato di seguito.
Utilizzo della modalità TransportWithMessageCredential
Quando si imposta la modalità di protezione su TransportWithMessageCredential, il trasporto determina il meccanismo di protezione a livello di trasporto effettivamente utilizzato. Ad esempio, il protocollo di trasporto HTTP utilizza il meccanismo Secure Sockets Layer (SSL) su HTTP (HTTPS). Pertanto, l'impostazione della proprietà ClientCredentialType di qualsiasi oggetto di protezione a livello di trasporto (ad esempio HttpTransportSecurity) viene ignorata. In altre parole, quando si utilizza la suddetta modalità, la proprietà ClientCredentialType può essere impostata solo per l'oggetto di protezione a livello di messaggio. In particolare, nel caso dell'associazione WSHttpBinding, tale proprietà può essere impostata solo per l'oggetto NonDualMessageSecurityOverHttp.
Per ulteriori informazioni, vedere Procedura: utilizzare le funzionalità di protezione a livello di trasporto e le credenziali a livello di messaggio.
Vedere anche
Attività
Procedura: configurare una porta con un certificato SSL
Procedura: utilizzare le funzionalità di protezione a livello di trasporto e le credenziali a livello di messaggio
Concetti
Protezione dei messaggi in WCF
Cenni preliminari sulla protezione
Associazioni fornite dal sistema
Altre risorse
Protezione del trasporto
<security> of <wsHttpBinding>
<security> of <basicHttpBinding>
<security> of <netTcpBinding>