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
WSHttpBinding
WSDualHttpBinding No No
NetTcpBinding
NetNamedPipeBinding No No
NetMsmqBinding No
MsmqIntegrationBinding No No
wsFederationHttpBinding No

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.

Vedi anche