Domanda

Sto cercando un modo semplice per crittografare la mia comunicazione soap nel mio servizio Web C#.

Stavo esaminando WSE3.0 ma sembra che Microsoft ne abbia abbandonato il supporto e quindi non è semplice da usare.
Sembra che WCF avrebbe potuto essere un'opzione, ma preferisco non eseguire l'aggiornamento da .NET 2.0.

Qualunque semplice, metodo di crittografia semplice?

È stato utile?

Soluzione

Penso che questo possa aiutare;l'anno scorso l'abbiamo usato per comprimere i servizi web e ha funzionato molto bene, credo che potrebbe essere potenziato con classi di crittografia;

Creazione di estensioni SOAP personalizzate - Estensione di compressione

Altri suggerimenti

Tutto ciò che fai per fornire "crittografia" che non utilizza SSL/TLS è probabile che sia vulnerabile.Ora devi chiederti: vale la pena sprecare ore di sviluppo che potresti spendere in funzionalità su una misura di sicurezza di pollo di gomma?Forse lo è.

Le API .NET come DPAPI e l'API Win32 crypt32 semplificano la crittografia di BLOB di dati con chiavi statiche.Ma come riceveranno le chiavi i tuoi clienti?Qualsiasi client SOAP installato dovrà avere la chiave masterizzata nella sua configurazione o riceverla tramite Internet non sicuro.

Questo è il problema che SSL/TLS risolve per te;la danza che fai con i certificati TLS è ciò che risolve il problema della comunicazione delle chiavi pubbliche su canali non attendibili.

Forse sono ingenuo, ma costringere la comunicazione a essere accettabile tramite HTTPS?Sviluppo servizi Web che funzionano su 2.0 e hanno avuto successo solo per ottenere IIS per far rispettare HTTPS sulla directory virtuale.

Sarebbe probabilmente il modo più semplice per andare, ma sfortunatamente non ho il controllo sulla configurazione IIS e non posso garantire che possa eseguire HTTPS.

In tal caso, forse la soluzione migliore è crittografare caso per caso parti dei messaggi SOAP (dopo tutto, potrebbe non essere necessario crittografare l'intero messaggio, ma solo alcuni campi sensibili?), oppure si potrebbe scegliere di utilizzare un HttpModule per intercettare tutti i messaggi e operare sui contenuti.In entrambi i casi probabilmente dovrai fornire proxy personalizzati.

Forse sono ingenuo, ma forzare la comunicazione tramite https sarebbe accettabile?Sviluppo servizi Web eseguiti su 2.0 e ho avuto successo semplicemente facendo in modo che IIS applichi https sulla directory virtuale.

In alternativa, o in aggiunta, puoi controllare il Proprietà HttpRequest.IsSecureConnection.

In realtà utilizziamo WSE 3.0 nei nostri servizi Web, originariamente sviluppati prima di WCF.Per motivi di sicurezza, utilizziamo un sistema basato su token SAML basato sulle classi Cryptography in System.Security.

Funziona molto beneTuttavia questo metodo non è affatto “semplice”.

È possibile utilizzare la crittografia dei parametri in C# utilizzando l'estensione System.Security.Cryptography.

Crittografare i tuoi parametri e decrittografarli sarebbe più difficile ma molto più sicuro.

Come:Crittografare e decrittografare i dati utilizzando una chiave simmetrica (Rijndael) (C#/VB.NET)

Sto utilizzando questo approccio per un servizio Web OTP (one time password) e per me funziona correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top