2012-07-12 90 views
0

該方案是我們有一個WCF服務,它使用我們構建的內部Web服務的方法。通過web服務傳遞時的Wcf安全性(.asmx)

WCF服務非常輕量級。

我們希望保護此WCF服務,以便只有某些客戶端可以使用它(它當前正坐在面向公衆的服務器上)。

我們無法在這檯面向公衆的服務器上安裝證書,因此我們想知道最佳安全模型的使用方法。

理想情況下,它可以被配置爲使客戶端使用WCF服務簡單地「傳遞」到內部Web服務的證書,因爲這是在我們控制的服務器上,然後證書驗證發生。

這是可能的..?如果沒有,我們可以使用其他安全選項..?

在此先感謝。

+0

據我所知,您的面向公衆的Web服務器將不得不'接受'客戶證書。否則,客戶端證書不可用於WCF行爲(用於轉發)。 – 2012-07-12 09:54:31

+0

那麼這是否意味着公共服務器上的IIS無法設置,因此客戶端傳遞的證書「未被檢查」並簡單地轉發到內部服務器上? – user811826 2012-07-12 13:15:25

+0

不確定,我*認爲*如果IIS處理它將在客戶端證書上轉發的請求,但不要在此引用我。但是,如果您有反向代理而不是IIS,那麼它只會轉發請求。 – 2012-07-12 15:10:59

回答

0

我想你必須詳細說明你自己的自定義安全模型。

要解決的主要問題是如何共享您和客戶端之間的「密鑰」。 您無法安裝證書,因此您必須將密鑰存儲在其他地方,例如web.config內的部分......並以安全的方式分發給客戶端。

您可以使用此密鑰對消息進行簽名或加密;你也可以使用密碼加密的標準模式。

檢查是否可以使用某些WS-Security功能!!!

此外,還檢查.Net Framework提供的綁定身份驗證和保護模式。

1

解決方法是使用郵件頭並檢查客戶端的憑證。那就是你可以通過消息頭中的用戶名和密碼來檢查它在wcf服務上,如果罰款處理請求,否則丟棄它。