2008-08-20 29 views
16

我正在尋找一種簡單的方法來加密我的C#Web服務中的soap通信。C#Web服務中的加密

我正在調查WSE 3.0,但似乎微軟放棄了對它的支持,因此它不是直接使用。
看來WCF可能是一個選項,但我不想從.NET 2.0升級。

任何簡單,直截了當的加密方法?

回答

0

也許我很天真,但會強迫通過https通信是可以接受的? 我開發的Web服務可以在2.0上運行,並且只需讓IIS在虛擬目錄上強制執行https即可獲得成功。

或者,或者另外,您可以檢查HttpRequest.IsSecureConnection property

1

也許我太天真,但會迫使 通信是通過HTTPS 是可以接受的?我開發web 在2.0上運行的服務,並有 成功,只需讓IIS到 在虛擬 目錄中強制執行https。

這將是去 可能是最簡單的方式,但不幸的是我沒有 擁有控制權的IIS 配置,並不能保證 ,它可以運行HTTPS。

在這種情況下,也許是最好的選擇是任一種情況下逐案SOAP消息的加密部分(畢竟,你可能不需要被加密整個消息 - ?只是某些敏感領域),或者你可以選擇使用HttpModule來攔截所有的消息並對內容進行操作。無論哪種情況,您可能都必須提供自定義代理。

0

實際上,我們在我們的網絡服務,它最初是前WCF使用WSE 3.0。爲了安全起見,我們使用基於System.Security中Cryptography類的基於SAML令牌的系統。

它工作得很好。但是,這種方法絕非「簡單」。

2

您所做的任何提供不使用SSL/TLS的「加密」都可能是脆弱的。現在你必須問自己,值得花費開發時間來開發橡皮雞安全措施的功能嗎?也許是。

.NET API(如DPAPI和Win32 crypt32 API)可以很容易地使用靜態密鑰來加密數據斑點。但您的客戶如何獲得鑰匙?任何已安裝的SOAP客戶端必須將密鑰燒入其配置中,或通過不安全的Internet接收密鑰。

這是SSL/TLS爲您解決的問題;您使用TLS證書進行的舞蹈解決了通過不受信任的渠道傳輸公鑰的問題。