Associazioni e protezione
Le associazioni fornite dal sistema incluse in Windows Communication Foundation (WCF) offrono un modo rapido per programmare applicazioni WCF. Tutte le associazioni, tranne una, dispongono di uno schema di sicurezza predefinito attivo. In questo argomento viene illustrato come selezionare l'associazione corretta per la sicurezza desiderata.
Per una panoramica della sicurezza di WCF, vedere Panoramica della sicurezza. Per altre informazioni sulla programmazione di WCF tramite associazioni, vedere Programmazione della sicurezza WCF.
Se è già stata selezionata un'associazione, è possibile trovare ulteriori informazioni sui comportamenti in fase di esecuzione associati alla sicurezza in Comportamenti di sicurezza.
Alcune funzionalità di sicurezza non sono programmabili tramite le associazioni fornite dal sistema. Per altre informazioni sull'uso di un binding personalizzato, vedere Funzionalità di sicurezza con binding personalizzati.
Funzionalità di sicurezza delle associazioni
WCF include numerose associazioni fornite dal sistema che soddisfano la maggior parte delle necessità. È inoltre possibile creare un'associazione personalizzata se una determinata associazione non è sufficiente. Per visualizzare l'elenco dei binding forniti dal sistema, vedere Binding forniti dal sistema. Per altre informazioni sui binding personalizzati, vedere Binding personalizzati.
Ogni associazione in WCF si presenta in due forme: come API e come elemento XML utilizzato in un file di configurazione. WSHttpBinding
(API), ad esempio, ha un equivalente in <wsHttpBinding>.
Nella sezione seguente vengono elencate entrambe le forme per ogni associazione e vengono riepilogate le funzionalità di sicurezza.
BasicHttp
Nel codice, usare la classe BasicHttpBinding. Nella configurazione, usare <basicHttpBinding>.
Questa associazione è progettata per l'utilizzo con una gamma di tecnologie esistenti, incluse le seguenti:
Servizi Web ASP.NET (ASMX), versione 1.
Applicazioni Web Service Enhancements (WSE).
Profilo di base come definito nella specifica WS-I (Web Services Interoperability) (https://go.microsoft.com/fwlink/?LinkId=38955).
Basic Security Profile come definito in WS-I.
Per impostazione predefinita, questa associazione non è protetta. È progettata per interagire con i servizi ASMX. Quando la sicurezza è attivata, l'associazione è progettata per l'interazione con meccanismi di sicurezza di Internet Information Services (IIS), ad esempio l'autenticazione di base, digest e la sicurezza di Windows integrata. Per altre informazioni, vedere Panoramica della sicurezza del trasporto. Questa associazione supporta:
Sicurezza del trasporto HTTPS.
Autenticazione di base HTTP.
WS-Security.
Per altre informazioni, vedereBasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialTypee BasicHttpSecurityMode.
WSHttpBinding
Nel codice, usare la classe WSHttpBinding. Nella configurazione, usare <wsHttpBinding>.
Per impostazione predefinita, questa associazione implementa la specifica WS-Security e fornisce interoperabilità con servizi che implementano le specifiche WS-*. Sono supportati:
Sicurezza del trasporto HTTPS.
WS-Security.
Protezione del trasporto HTTPS con sicurezza della credenziale messaggi SOAP per l'autenticazione del chiamante.
Per altre informazioni, vedere WSHttpSecurity, MessageSecurityOverHttp, MessageCredentialType, SecurityMode, HttpTransportSecurity, HttpClientCredentialType e HttpProxyCredentialType.
WSDualHttpBinding
Nel codice, usare la classe WSDualHttpBinding. Nella configurazione, usare <wsDualHttpBinding>.
Questa associazione è progettata per consentire applicazioni di servizio duplex. Implementa la specifica WS-Security per la protezione del trasferimento basata sul messaggio. La protezione del trasporto non è disponibile. Per impostazione predefinita, fornisce le funzionalità seguenti:
Implementa WS-Reliable Messaging per l'affidabilità.
Implementa WS-Security per la protezione e l'autenticazione del trasferimento.
Utilizza HTTP per il recapito dei messaggi.
Utilizza la codifica dei messaggi testo/XML.
Tramite WS-Security (protezione a livello di messaggio), l'associazione consente di configurare i parametri seguenti:
Gruppo di algoritmi di sicurezza per determinare l'algoritmo di crittografia.
Opzioni dell'associazione per:
Fornitura di credenziali del servizio disponibili fuori banda nel client.
Fornitura di credenziali del servizio negoziate dal servizio come parte della configurazione del canale.
Per altre informazioni, vedere WSDualHttpSecurity e WSDualHttpSecurityMode.
NetTcpBinding
Nel codice, usare la classe NetTcpBinding. Nella configurazione, usare <netTcpBinding>.
Questa associazione è ottimizzata per le comunicazioni tra computer. Per impostazione predefinita, dispone delle caratteristiche seguenti:
Implementa la protezione a livello di trasporto.
Utilizza la protezione di Windows per la protezione e l'autenticazione del trasferimento.
Utilizza TCP per il trasporto.
Implementa la codifica messaggi binaria.
Implementa WS-Reliable Messaging.
Le opzioni includono:
Sicurezza a livello di messaggio (tramite WS-Security).
Sicurezza del trasporto con credenziali messaggio: riservatezza e integrità fornite da Transport Layer Security (TLS) su TCP e credenziali per l'autorizzazione fornite da WS-Security.
Per altre informazioni, vedere NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcp e MessageCredentialType.
NetNamedPipeBinding
Nel codice, usare la classe NetNamedPipeBinding. Nella configurazione, usare <netNamedPipeBinding>.
Questa associazione è ottimizzata per le comunicazioni tra processi (in genere nello stesso computer). Per impostazione predefinita, questa associazione dispone delle caratteristiche seguenti:
Utilizza la sicurezza del trasporto per il trasferimento e l'autenticazione dei messaggi.
Utilizza le named pipe per il recapito dei messaggi.
Implementa la codifica messaggi binaria.
Crittografia e firma dei messaggi.
Le opzioni includono:
- Autenticazione tramite la sicurezza di Windows.
Per altre informazioni, vedere NetNamedPipeSecurity, NetNamedPipeSecurityMode e NamedPipeTransportSecurity.
MsmqIntegrationBinding
Nel codice usare la classe MsmqIntegrationBinding; nella configurazione usare <msmqIntegrationBinding>.
Questa associazione è ottimizzata per la creazione di client e servizi WCF che interagiscono con endpoint Accodamento messaggi Microsoft (MSMQ) non WCF.
Per impostazione predefinita, questa associazione utilizza la sicurezza del trasporto e fornisce le caratteristiche di sicurezza seguenti:
Possibilità di disattivare la sicurezza (None).
Sicurezza del trasporto MSMQ (Transport).
Per altre informazioni, vedere NetMsmqSecurity e NetMsmqSecurityMode.
NetMsmqBinding
Nel codice, usare la classe NetMsmqBinding. Nella configurazione, usare <netMsmqBinding>.
Questa associazione viene utilizzata per la creazione di servizi WCF che richiedono il supporto di messaggi in coda MSMQ.
Per impostazione predefinita, questa associazione utilizza la sicurezza del trasporto e fornisce le caratteristiche di sicurezza seguenti:
Possibilità di disattivare la sicurezza (None).
Sicurezza del trasporto MSMQ (Transport).
Sicurezza dei messaggi basati su SOAP (Message).
Trasporto simultaneo e sicurezza dei messaggi (Both).
Tipi di credenziale client supportati: None, Windows, UserName, Certificate, IssuedToken.
La credenziale Certificate è supportata solo quando la modalità di sicurezza è impostata su Both o su Message.
Per altre informazioni, vedere MessageSecurityOverMsmq e MsmqTransportSecurity.
WSFederationHttpBinding
Nel codice, usare la classe WSFederationHttpBinding. Nella configurazione, usare <wsFederationHttpBinding>.
Per impostazione predefinita, questa associazione utilizza WS-Security (sicurezza a livello di messaggio).
Per altre informazioni, vedere Federazione, WSFederationHttpSecurity e WSFederationHttpSecurityMode.
Associazioni personalizzate
Se i requisiti non vengono soddisfatti da alcuna associazione fornita dal sistema, è possibile creare un'associazione personalizzata con un elemento di associazione di sicurezza personalizzato. Per altre informazioni, vedere Funzionalità di sicurezza con binding personalizzati.
Scelte di associazioni
Nella tabella seguente vengono riepilogate le funzionalità offerte nell'impostazione della modalità di sicurezza, ovvero vengono elencate le funzionalità disponibili quando la modalità di sicurezza è impostata su Transport
, Message
o TransportWithMessageCredential
. L'utilizzo di questa tabella consente di trovare le funzionalità di sicurezza più appropriate per l'applicazione.
Impostazione | Funzionalità |
---|---|
Trasporto | Autenticazione server Autenticazione client Sicurezza point-to-point Interoperabilità Accelerazione hardware Velocità effettiva elevata Firewall di sicurezza Applicazioni con latenza elevata Ripetizione della crittografia attraverso più hop |
Message | Autenticazione server Autenticazione client Sicurezza end-to-end Interoperabilità Attestazioni complesse Federazione Autenticazione a più fattori Token personalizzati Servizio notary/timestamp Applicazioni con latenza elevata Persistenza di firme del messaggio |
TransportWithMessageCredential | Autenticazione server Autenticazione client Sicurezza point-to-point Interoperabilità Accelerazione hardware Velocità effettiva elevata Richieste del client Dettagliate Federazione Autenticazione a più fattori Token personalizzati Firewall di sicurezza Applicazioni con latenza elevata Ripetizione della crittografia attraverso più hop |
Nella tabella seguente vengono elencate le associazioni che supportano le impostazioni delle varie modalità. Selezionare un'associazione dalla tabella per creare l'endpoint del servizio.
Binding | Supporto modalità trasporto | Supporto modalità messaggio | Supporto TransportWithMessageCredential |
---|---|---|---|
BasicHttpBinding |
Sì | Sì | Sì |
WSHttpBinding |
Sì | Sì | Sì |
WSDualHttpBinding |
No | Sì | No |
NetTcpBinding |
Sì | Sì | Sì |
NetNamedPipeBinding |
Sì | No | No |
NetMsmqBinding |
Sì | Sì | No |
MsmqIntegrationBinding |
Sì | No | No |
wsFederationHttpBinding |
No | Sì | Sì |
Credenziali di trasporto nelle associazioni
Nella tabella seguente vengono elencati i tipi di credenziali client disponibili quando si utilizza BasicHttpBinding
o WSHttpBinding
nella modalità di sicurezza del trasporto.
Tipo | Descrizione |
---|---|
Nessuna | Specifica che il client non deve presentare alcuna credenziale. Il client viene pertanto autenticato come anonimo. |
Di base | Autenticazione di base. Per altre informazioni, vedere RFC2 617 - Autenticazione HTTP: autenticazione di base e del digest, disponibile alla pagina https://go.microsoft.com/fwlink/?LinkId=84023. |
Digest | Autenticazione digest. Per altre informazioni, vedere RFC2 617 - Autenticazione HTTP: autenticazione di base e del digest, disponibile alla pagina https://go.microsoft.com/fwlink/?LinkId=84023. |
NTLM | Autenticazione NT LAN Manager (NTLM). |
Finestre | Autenticazione Windows. |
Certificate | Autenticazione eseguita mediante un certificato. |
IssuedToken | Consente al servizio di richiedere l'autenticazione del client tramite un token emesso da un servizio token di sicurezza o da CardSpace. Per altre informazioni, vedere Federazione e token emessi. |
Credenziali client dei messaggi nelle associazioni
Nella tabella seguente vengono elencati i tipi di credenziali client disponibili quando si utilizza un'associazione nella modalità di sicurezza dei messaggi.
Tipo | Descrizione |
---|---|
Nessuna | Consente al servizio di interagire con client anonimi. |
Finestre | Consente gli scambi di messaggi SOAP nel contesto autenticato di una credenziale di Windows. |
UserName | Consente al servizio di richiedere che l'autenticazione del client sia eseguita tramite una credenziale UserName. Si noti che quando la modalità di sicurezza è impostata su TransportWithMessageCredential , WCF non supporta l'invio di un digest delle password, né la derivazione delle chiavi basata su password e neppure l'utilizzo di tali chiavi per implementare la modalità di sicurezza dei messaggi. Di conseguenza, quando si utilizzano credenziali di tipo nome utente, WCF richiede che il trasporto sia protetto. |
Certificate | Consente al servizio di richiedere che l'autenticazione del client si basi su un certificato. |
IssuedToken | Consente al servizio di utilizzare un servizio token di sicurezza per fornire un token personalizzato. |