Procedura: impostare la modalità di sicurezza
Il sistema di sicurezza di Windows Communication Foundation (WCF) presenta tre modalità di sicurezza 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 sicurezza 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 altre informazioni, vedere Sicurezza WCF, Panoramica della sicurezza, Protezione dei servizi e Protezione di servizi e client. Per altre informazioni sulla modalità di trasporto e il messaggio, vedere Sicurezza del trasporto and Sicurezza del messaggio.
Per impostare la modalità di sicurezza in codice
Creare un'istanza della classe di associazione in uso. Per un elenco di binding predefiniti, vedere Binding forniti dal sistema. In questo esempio viene creata un'istanza della classe WSHttpBinding
Impostare la proprietà
Mode
dell'oggetto restituito dalla proprietàSecurity
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
In alternativa, impostare la modalità su "Message", come mostrato nel codice seguente.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
In alternativa, impostare la modalità su "TransportWithMessageCredential", come mostrato nel codice seguente.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
La modalità può anche essere impostata nel costruttore dell'associazione, come mostrato nel codice seguente.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
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
suTransport
.Impostare la proprietà
ClientCredential
su un valore appropriato. Nell'esempio di codice seguente la proprietà viene impostata suWindows
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
Per impostare la proprietà ClientCredentialType quando si imposta la modalità "Message"
Creare un'istanza dell'associazione.
Impostare la proprietà
Mode
suMessage
.Impostare la proprietà
ClientCredential
su un valore appropriato. Nell'esempio di codice seguente la proprietà viene impostata suCertificate
.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.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 impostarne l'attributoname
su un valore appropriato.Aggiungere un elemento
<security>
mode e impostare l'attributomode
Message suMessage
Transport,Transport
TransportWithMessageCredential oppureTransportWithMessageCredential
.Se si imposta la modalità su
Transport
, aggiungere un elemento<transport>
clientCredential e impostare l'attributoclientCredential
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 sicurezza su TransportWithMessageCredential
, il trasporto determina il meccanismo di sicurezza 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 sicurezza a livello di trasporto (ad esempio HttpTransportSecurity) viene ignorata. In altre parole, è possibile impostare solo la proprietà ClientCredentialType
dell'oggetto di sicurezza a livello di messaggio (per l'associazione WSHttpBinding
, tale proprietà può essere impostata solo per l'oggetto NonDualMessageSecurityOverHttp).
Per altre informazioni, vedere Procedura: usare le funzionalità di sicurezza a livello di trasporto e le credenziali a livello di messaggio.
Vedi anche
- Procedura: Configurare una porta con un certificato SSL
- Procedura: Usare le funzionalità di sicurezza del trasporto e le credenziali a livello di messaggio
- Sicurezza del trasporto
- Sicurezza dei messaggi
- Proteggere un database in SQL Data Warehouse
- Associazioni fornite dal sistema
- <Sicurezza>
- <Sicurezza>
- <Sicurezza>