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

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 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