Protezione dei messaggi in WCF

Windows Communication Foundation (WCF) ha due modalità principali per garantire la protezione (Transport e Message) e una terza modalità (TransportWithMessageCredential) che rappresenta una combinazione delle due. In questo argomento viene illustrata la protezione dei messaggi e i motivi per cui è consigliabile utilizzarla.

Informazioni sulla protezione dei messaggi

La protezione dei messaggi si avvale della specifica WS-Security per proteggere i messaggi. Tale specifica descrive i miglioramenti apportati alla messaggistica SOAP per assicurare riservatezza, integrità e autenticazione a livello di messaggio SOAP (anziché a livello del trasporto).

In breve, la protezione dei messaggi differisce dalla protezione del trasporto in quanto incapsula le credenziali e le attestazioni di protezione in ogni messaggio insieme a qualsiasi tipo di protezione del messaggio (con firma o crittografia). L'applicazione diretta della protezione al messaggio modificando il contenuto consente al messaggio protetto di essere indipendente per quanto concerne gli aspetti della protezione. Questo rende possibili alcuni scenari che non sono accessibili quando si utilizza la protezione del trasporto.

Motivi per utilizzare la protezione dei messaggi

Nella protezione a livello di messaggio tutte le informazioni sulla protezione sono incapsulate nel messaggio. Di conseguenza, proteggere il messaggio con una protezione a livello di messaggio anziché una protezione a livello di trasporto offre i vantaggi seguenti:

  • Protezione end-to-end. Un trasporto è protetto, ad esempio tramite Secure Sockets Layer (SSL), solo quando la comunicazione è di tipo point-to-point. Se il messaggio viene indirizzato a uno o più intermediari SOAP prima di raggiungere il destinatario finale, il messaggio stesso non è più protetto dopo essere stato letto da un intermediario durante la trasmissione. Inoltre, le informazioni di autenticazione del client sono disponibili solo per il primo intermediario e devono essere trasmesse al destinatario finale in modalità fuori banda, se necessario. Questo si applica anche se l'intera route utilizza la protezione SSL tra i singoli hop. Poiché la protezione dei messaggi si applica direttamente al messaggio e protegge il codice XML in esso contenuto, la protezione segue il messaggio indipendentemente dal numero di intermediari coinvolti prima che il messaggio raggiunga il destinatario finale. Ciò rende possibile uno scenario di protezione end-to-end.
  • Maggiore flessibilità. È possibile firmare o crittografare parti del messaggio, anziché l'intero messaggio. Di conseguenza, gli intermediari possono visualizzare le parti del messaggio destinate a loro. Se il mittente vuole rendere visibili alcune informazioni nel messaggio agli intermediari ma vuole assicurare che non vengano manomesse, può scegliere di firmarlo solamente, senza crittografarlo. Poiché la firma è parte del messaggio, il destinatario finale può verificare che le informazioni nel messaggio siano state ricevute intatte. In uno scenario potrebbe essere presente un servizio intermedio SOAP che indirizza il messaggio secondo il valore dell'intestazione Action. Per impostazione predefinita, WCF non crittografa il valore Action ma lo firma se viene utilizzata la protezione dei messaggi. Pertanto, queste informazioni sono disponibili a tutti gli intermediari, ma nessuno può modificarle.
  • Supporto di più trasporti. È possibile inviare messaggi protetti sui più trasporti diversi, ad esempio named pipe e TCP, senza dover utilizzare il protocollo per la protezione. Con la protezione a livello di trasporto, tutte le informazioni di protezione sono limitate all'ambito di una sola particolare connessione del trasporto e non sono disponibili dal contenuto del messaggio stesso. La protezione dei messaggi protegge il messaggio indipendentemente dal trasporto utilizzato per trasmettere il messaggio e il contesto di protezione è direttamente incorporato nel messaggio.
  • Supporto per un ampio insieme di credenziali e attestazioni. La protezione dei messaggi è basata sulla specifica WS-Security che fornisce un framework estensibile capace di trasmettere qualsiasi tipo di attestazione all'interno del messaggio SOAP. A differenza della protezione del trasporto, l'insieme di meccanismi di autenticazione, o attestazioni, che è possibile utilizzare non è limitato dalle funzionalità di trasporto. La protezione dei messaggi WCF include più tipi di autenticazione e trasmissione delle attestazioni e può essere estesa per supportare tipi aggiuntivi, se necessario. Per questi motivi, ad esempio, un scenario di credenziali federato non è possibile senza la protezione dei messaggi. Per ulteriori informazioni sugli scenari della federazione supportati da WCF, vedere Federazione e token emessi.

Confronto tra la protezione dei messaggi e del trasporto

Vantaggi e svantaggi della protezione a livello di trasporto

La protezione del trasporto offre i vantaggi seguenti:

  • Non richiede che le parti in comunicazione capiscano i concetti di protezione a livello di XML. Può migliorare l'interoperabilità, ad esempio, quando viene utilizzato HTTPS per proteggere la comunicazione.
  • Prestazioni generalmente migliorate.
  • Sono disponibili acceleratori hardware.
  • Il flusso è supportato.

La protezione del trasporto offre gli svantaggi seguenti:

  • Solo connessione hop-to-hop.
  • Insieme di credenziali limitato e non estensibile.
  • Dipende dal trasporto.

Svantaggi della protezione a livello di messaggio

La protezione dei messaggi offre gli svantaggi seguenti:

  • Prestazioni
  • Impossibile utilizzare il flusso dei messaggi.
  • Richiede l'implementazione di meccanismi di protezione a livello del contenuto XML e il supporto della specifica WS-Security. Ciò può influire sull'interoperabilità.

Vedere anche

Attività

Procedura: utilizzare le funzionalità di protezione a livello di trasporto e le credenziali a livello di messaggio

Altre risorse

Protezione di servizi e client
Protezione del trasporto
Microsoft Patterns and Practices, Capitolo 3: Implementazione della protezione a livello di trasporto e di messaggio (il contenuto potrebbe essere in inglese)