2012-07-10 17 views
5

Ho letto la documentazione fornita da MSDN e alcuni altri post su questo sito. Tuttavia, è ancora poco chiaro se WCF (in particolare, NetTcpBinding) crittograferà effettivamente il messaggio contenuto quando si utilizza la sicurezza dei messaggi con i certificati. Qualcuno lo sa per certo?La sicurezza dei messaggi WCF crittografa effettivamente i contenuti dei messaggi?

Per esempio è possibile specificare entrambe le credenziali di trasporto e di messaggi nella configurazione:

 <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Certificate"/> 
      <message clientCredentialType="Certificate" 
        negotiateServiceCredential="true" /> 
     </security> 

Per quanto posso dire la documentazione MSDN implica che la protezione dei messaggi si basa semplicemente su entrambi username/password o l'autenticazione basata su certificati (negoziazione), ma non specifica in modo specifico che il messaggio stesso sia effettivamente crittografato a livello di messaggio.

Ad esempio se utilizzo SOLO la sicurezza dei messaggi, con negoziazione basata sui certificati, non penso che i contenuti dei messaggi siano effettivamente crittografati (ad esempio uno sniffer di pacchetti potrebbe intercettare il contenuto dei messaggi non elaborati, anche se il servizio impone l'autenticazione) ?

Se la crittografia a livello di messaggio vero è possibile (utilizzando NetTcpBinding) come è fatto nel codice? Credo che questo è legato alla AlgorithmSuite, anche se non sono sicuro,

binding.Security.Mode = SecurityMode.Message; 
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; 
binding.Security.Message.AlgorithmSuite = new System.ServiceModel.Security.TripleDesSecurityAlgorithmSuite(); 

risposta

6

Non sono sicuro se questo risponde pienamente alla tua domanda, ma secondo this article TCP cripta da predefinito.

NetTcpBinding è sicuro per impostazione predefinita. In particolare, i chiamanti devono fornire le credenziali di Windows per l'autenticazione e tutti i pacchetti di messaggi sono firmati e crittografati sul protocollo TCP.

In altre parole, se si personalizza la configurazione, ma di utilizzare una modalità di sicurezza diverso da 'Nessuno',

Per impostazione predefinita, tutti i binding protetti WCF sarà cifrare e firmare i messaggi. Non è possibile disabilitare questo per sicurezza del trasporto, tuttavia, per la sicurezza del messaggio si potrebbe desiderare di disabilitarlo a scopo di debug o quando viene utilizzato un metodo di protezione alternativo come IPSec quando .

+0

ho deciso di solo annusare i pacchetti di me stesso utilizzando Wireshark, e posso confermare che questo è vero.Apparentemente Windows si occupa della crittografia stessa per le comunicazioni dominio/dominio trusted. Grazie! –

5

WCF in grado di crittografare il contenuto del messaggio con un netTcpBinding. Il modo più semplice per vedere questo è aggiungere diagnostics al tuo file .config ed emettere un file svclog. È possibile vedere il messaggio cifrato con lo strumento svctraceviewer.exe

Ecco qualche informazione in più (che potreste aver già letto) WCF NetTcpBinding Security - how does it work?

0

Forse una risposta tardiva. Ma ecco qualcosa che ho trovato su MSDN.

La sicurezza dei messaggi rende il messaggio sicuro indipendentemente dal trasporto utilizzato per trasmettere il messaggio e il contesto di sicurezza è incorporato direttamente nel messaggio.

MSDN Article

Problemi correlati