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 protezione predefinito attivo. In questo argomento viene illustrato come selezionare l'associazione corretta per la protezione desiderata.
Per una panoramica della protezione WCF, vedere Cenni preliminari sulla protezione. Per ulteriori informazioni sulla programmazione WCF tramite associazioni, vedere Programmazione delle funzionalità di protezione di WCF.
Se è già stata selezionata un'associazione, è possibile trovare ulteriori informazioni sui comportamenti in fase di esecuzione associati alla protezione in Comportamenti di protezione in WCF.
Alcune funzionalità di protezione non sono programmabili tramite le associazioni fornite dal sistema. Per un maggiore controllo sull'utilizzo di un'associazione personalizzata, vedere Funzionalità di protezione con associazioni personalizzate.
Funzionalità di protezione 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 un elenco delle associazioni fornite dal sistema, vedere Associazioni fornite dal sistema. Per ulteriori informazioni sulle associazioni personalizzate, vedere Associazioni personalizzate.
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 Element.
Nella sezione seguente vengono elencate entrambe le forme per ogni associazione e vengono riepilogate le funzionalità di protezione.
BasicHttp
Nel codice, utilizzare la classe BasicHttpBinding. Nella configurazione, utilizzare basicHttpBinding Element.
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).
- Basic Profile come definito nella specifica Web Services Interoperability (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38995, il contenuto potrebbe essere in inglese).
- Basic Security Profile come definito in WS-I.
Per impostazione predefinita, questa associazione non è protetta. È progettata per interagire con i servizi ASMX. Quando la protezione è attivata, l'associazione è progettata per l'interazione con meccanismi di protezione di Internet Information Services (IIS), ad esempio l'autenticazione di base, digest e la protezione di Windows integrata. Per ulteriori informazioni, vedere Panoramica sulla protezione del trasporto. Questa associazione supporta:
- Protezione del trasporto HTTPS.
- Autenticazione di base HTTP.
- WS-Security.
Per ulteriori informazioni, vedere , BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialType e BasicHttpSecurityMode.
WSHttpBinding
Nel codice, utilizzare la classe WSHttpBinding. Nella configurazione, utilizzare wsHttpBinding Element.
Per impostazione predefinita, questa associazione implementa la specifica WS-Security e fornisce interoperabilità con servizi che implementano le specifiche WS-*. Sono supportati:
- Protezione del trasporto HTTPS.
- WS-Security.
- Protezione del trasporto HTTPS con protezione della credenziale messaggi SOAP per l'autenticazione del chiamante.
Per ulteriori informazioni, vedere WSHttpSecurity, MessageSecurityOverHttp, MessageCredentialType, SecurityMode, HttpTransportSecurity, HttpClientCredentialType, e HttpProxyCredentialType.
WSDualHttpBinding
Nel codice, utilizzare la classe WSDualHttpBinding. Nella configurazione, utilizzare wsDualHttpBinding Element.
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:
- Suite di algoritmi di protezione 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 ulteriori informazioni, vedere WSDualHttpSecurity e WSDualHttpSecurityMode.
NetTcpBinding
Nel codice, utilizzare la classe NetTcpBinding. Nella configurazione, utilizzare netTcpBinding Element.
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:
- Protezione a livello di messaggio (tramite WS-Security).
- Protezione 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 ulteriori informazioni, vedere NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcp, e MessageCredentialType.
NetNamedPipeBinding
Nel codice, utilizzare la classe NetNamedPipeBinding. Nella configurazione, utilizzare netNamedPipeBinding Element.
Questa associazione è ottimizzata per le comunicazioni tra processi (in genere nello stesso computer). Per impostazione predefinita, questa associazione dispone delle caratteristiche seguenti:
- Utilizza la protezione 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 protezione di Windows.
Per ulteriori informazioni, vedere NetNamedPipeSecurity, NetNamedPipeSecurityMode e NamedPipeTransportSecurity.
MsmqIntegrationBinding
Nel codice, utilizzare la classe MsmqIntegrationBinding. Nella configurazione, utilizzare msmqIntegrationBinding element.
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 protezione del trasporto e fornisce le caratteristiche di protezione seguenti:
- Possibilità di disattivare la protezione (None).
- Protezione del trasporto MSMQ (Transport).
Per ulteriori informazioni, vedere NetMsmqSecurity e NetMsmqSecurityMode.
NetMsmqBinding
Nel codice, utilizzare la classe NetMsmqBinding. Nella configurazione, utilizzare netMsmqBinding Element.
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 protezione del trasporto e fornisce le caratteristiche di protezione seguenti:
- Possibilità di disattivare la protezione (None).
- Protezione del trasporto MSMQ (Transport).
- Protezione dei messaggi basati su SOAP (Message).
- Trasporto simultaneo e protezione dei messaggi (Both).
- Tipi di credenziale client supportati: None, Windows, UserName, Certificate, IssuedToken.
La credenziale Certificate è supportata solo quando la modalità di protezione è impostata su Both o su Message.
Per ulteriori informazioni, vedere MessageSecurityOverMsmq e MsmqTransportSecurity.
WSFederationHttpBinding
Nel codice, utilizzare la classe WSFederationHttpBinding. Nella configurazione, utilizzare WSFederationHttpBinding element.
Per impostazione predefinita, questa associazione utilizza WS-Security (protezione a livello di messaggio).
Per ulteriori 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 protezione personalizzato. Per ulteriori informazioni, vedere Funzionalità di protezione con associazioni personalizzate.
Scelte di associazioni
Nella tabella seguente vengono riepilogate le funzionalità offerte nell'impostazione della modalità di protezione, ovvero vengono elencate le funzionalità disponibili quando la modalità di protezione è impostata su Transport, Message o TransportWithMessageCredential. L'utilizzo di questa tabella consente di trovare le funzionalità di protezione più appropriate per l'applicazione.
Impostazione | Funzionalità |
---|---|
Transport |
Autenticazione server Autenticazione client Protezione point-to-point Interoperabilità Accelerazione hardware Velocità effettiva elevata Firewall di protezione Applicazioni con latenza elevata Ripetizione della crittografia attraverso più hop |
Message |
Autenticazione server Autenticazione client Protezione 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 Protezione point-to-point Interoperabilità Accelerazione hardware Velocità effettiva elevata Richieste del client Dettagliate Federazione Autenticazione a più fattori Token personalizzati Firewall di protezione 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.
Associazione | 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 protezione del trasporto.
Tipo | Descrizione |
---|---|
None |
Specifica che il client non deve presentare alcuna credenziale. Il client viene pertanto autenticato come anonimo. |
Basic |
Autenticazione di base. Per ulteriori informazioni, vedere l'articolo su RFC 2617, Autenticazione HTTP: autenticazione di base e digest, disponibile all'indirizzo https://go.microsoft.com/fwlink/?LinkId=84023 (il contenuto potrebbe essere in inglese). |
Digest |
Autenticazione digest. Per ulteriori informazioni, vedere l'articolo su RFC 2617, Autenticazione HTTP: autenticazione di base e digest, disponibile all'indirizzo https://go.microsoft.com/fwlink/?LinkId=84023 (il contenuto potrebbe essere in inglese). |
NTLM |
Autenticazione NT LAN Manager (NTLM). |
Windows |
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 protezione o da CardSpace. Per ulteriori 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 protezione dei messaggi.
Tipo | Descrizione |
---|---|
Nessuna |
Consente al servizio di interagire con client anonimi. |
Windows |
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 di tipo nome utente. Si noti che quando la modalità di protezione è 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 protezione dei messaggi. Di conseguenza, quando si utilizzano credenziali di tipo nome utente, WCF richiede che il trasporto sia protetto. |
Certificato |
Consente al servizio di richiedere che l'autenticazione del client sia basata su un certificato. |
IssuedToken |
Consente al servizio di utilizzare un servizio token di protezione per fornire un token personalizzato. |
Vedere anche
Concetti
Cenni preliminari sulla protezione
Selezione di un tipo di credenziale
Comportamenti di protezione in WCF
Altre risorse
Protezione di servizi e client
Funzionalità di protezione con associazioni personalizzate