我正在尋找一種簡單的方法來加密我的C#Web服務中的soap通信。C#Web服務中的加密
我正在調查WSE 3.0,但似乎微軟放棄了對它的支持,因此它不是直接使用。
看來WCF可能是一個選項,但我不想從.NET 2.0升級。
任何簡單,直截了當的加密方法?
我正在尋找一種簡單的方法來加密我的C#Web服務中的soap通信。C#Web服務中的加密
我正在調查WSE 3.0,但似乎微軟放棄了對它的支持,因此它不是直接使用。
看來WCF可能是一個選項,但我不想從.NET 2.0升級。
任何簡單,直截了當的加密方法?
我認爲這可以幫助;去年我們用這個來壓縮webservices,它表現得非常好,我相信它可以通過加密類來增強;
也許我很天真,但會強迫通過https通信是可以接受的? 我開發的Web服務可以在2.0上運行,並且只需讓IIS在虛擬目錄上強制執行https即可獲得成功。
或者,或者另外,您可以檢查HttpRequest.IsSecureConnection property。
也許我太天真,但會迫使 通信是通過HTTPS 是可以接受的?我開發web 在2.0上運行的服務,並有 成功,只需讓IIS到 在虛擬 目錄中強制執行https。
這將是去 可能是最簡單的方式,但不幸的是我沒有 擁有控制權的IIS 配置,並不能保證 ,它可以運行HTTPS。
在這種情況下,也許是最好的選擇是任一種情況下逐案SOAP消息的加密部分(畢竟,你可能不需要被加密整個消息 - ?只是某些敏感領域),或者你可以選擇使用HttpModule來攔截所有的消息並對內容進行操作。無論哪種情況,您可能都必須提供自定義代理。
實際上,我們在我們的網絡服務,它最初是前WCF使用WSE 3.0。爲了安全起見,我們使用基於System.Security中Cryptography類的基於SAML令牌的系統。
它工作得很好。但是,這種方法絕非「簡單」。
您所做的任何提供不使用SSL/TLS的「加密」都可能是脆弱的。現在你必須問自己,值得花費開發時間來開發橡皮雞安全措施的功能嗎?也許是。
.NET API(如DPAPI和Win32 crypt32 API)可以很容易地使用靜態密鑰來加密數據斑點。但您的客戶如何獲得鑰匙?任何已安裝的SOAP客戶端必須將密鑰燒入其配置中,或通過不安全的Internet接收密鑰。
這是SSL/TLS爲您解決的問題;您使用TLS證書進行的舞蹈解決了通過不受信任的渠道傳輸公鑰的問題。
您可以使用System.Security.Cryptography擴展在C#中使用參數加密。
加密您的參數並解密它們會更困難但更安全。
How To: Encrypt and Decrypt Data Using a Symmetric (Rijndael) Key (C#/VB.NET)
我使用這個形式給出了一個OTP(一次性密碼)的Web服務,它爲我工作得很好。