WCF 服務 - 使用使用者名身份驗證的證書和消息安全性
我正準備創建一個 WCF 服務,我們的客戶可以使用它來更新我們系統中的數據。所以它必須在網際網路上可用。我有一本關於 WCF 的書,從中我知道這
Message Security是通過 Internet 提供 WCF 服務的方法。那是因為您不應該使用傳輸安全性,因為它應該只在可以保證服務和客戶端之間存在點對點連接的環境中使用。我做對了嗎?因此,我想將 Message Security 與自定義UserName身份驗證結合使用。我知道我必須獲得證書才能做到這一點。我們公司已經擁有用於我們網站的 SSL 證書。
- 我可以為 WCF 服務的消息安全使用相同的證書嗎?
和
- 消息安全方式是否可以與期望 ASMX Web 服務的客戶端互操作?
出於測試目的,我使用 Makecert 創建了自己的證書。它工作得很好,但我總是不得不將證書添加到
Trusted Persons客戶端機器上。
- 是否可以在不強制客戶端手動添加證書的情況下啟用
Message Security上述證書?Trusted Persons現在,讓我們假設以下場景:
ISA 伺服器/防火牆後面有兩個 Web 伺服器。此 ISA 伺服器持有 www.company.com 地址的證書。所以所有的 SSL 東西都由它處理。它還將傳入的請求相應地轉發到網路伺服器。新創建的 WCF 服務應該在第二個網路伺服器上執行。
- 我是否必須將證書複製到網路伺服器才能使用
Message Security?如果是,我聽說複製證書不是好的做法,因為它會降低安全級別。將證書移動到網路伺服器不是一種選擇,因為 Web-Server1 上的網站也需要它。
- 在這種情況下我有什麼選擇?
和:
- 無論給定要求如何,這種情況下的最佳實踐是什麼?
謝謝…
精心準備的問題。首先,我可能讀了同一本書,我想澄清一下這個說法:
那是因為您不應該使用傳輸安全性,因為它應該只在可以保證服務和客戶端之間存在點對點連接的環境中使用。
是的。HTTPS(傳輸安全)僅提供點對點安全,但 IMO 人員並不正確理解這種情況。你認為如果你通過 HTTPs 連接到你的網上銀行,它會隨機地在網際網路交換通信從 HTTPS 到 HTTP 的中間某個地方嗎?不!點對點連接意味著客戶端和提供請求 URL 的訪問網關之間的安全傳輸通道。在您的方案中,這意味著客戶端和您的 ISA 伺服器之間的安全傳輸通道。您的 ISA 和 Web 伺服器 2 之間的通信不會受到保護。如果您想要端到端的,它將在客戶端和 Web 伺服器 2 之間提供安全通道(ISA 將無法攔截消息),您需要消息安全性。
現在回答您的其他問題:
我可以為 WCF 服務的消息安全使用相同的證書嗎?
是的,您可以,但您必須將私鑰複製到您的 Web 伺服器 2。
消息安全方式是否可以與期望 ASMX Web 服務的客戶端互操作?
不可以。純 ASMX 客戶端不能使用消息安全性,除非您編寫大量自定義 SOAP 標頭和擴展或安裝 WSE 3.0。
是否可以使用上述證書啟用消息安全性而不強制客戶端手動將證書添加到受信任的人?
是的,但是必須在客戶端電腦上信任發布證書的證書頒發機構。HTTPS 也一樣。使用消息安全保護的服務還可以在 WSDL 中公開證書的指紋。客戶端可以使用此指紋驗證服務身份。我認為在這種情況下,您也不需要在客戶端上安裝證書,但是當證書過期時,所有客戶端都必須更新。
我是否必須將證書複製到網路伺服器才能使用 Message Security?
是的,你必須。但這可能是個問題,因為出於安全原因,證書可能被標記為不可導出。最好的解決方案是為此目的申請新證書。
