2012-01-24 61 views
0

我們有一個當前正在使用basicHttpBinding的服務。我們可以靈活地將其轉換爲netTCPBinding。在IIS 7中部署它時,我們將身份驗證用作匿名。該服務由同一網絡中的IIS中託管的網站訪問。WCF安全 - https和匿名身份驗證

我們的客戶提出了關於匿名身份驗證的問題,他不希望不需要的用戶(在辦公室網絡中)使用它。關鍵是人們可以創建自己的樣本網站並使用該服務。

假設我使用運輸憑證類型爲「證書」,它是否符合我的要求?也就是說,只有擁有客戶端證書的用戶才能訪問該服務?你能指引我解釋如何暗示它的任何文章嗎?

<endpoint address="" 
binding="basicHttpBinding" 

我已經提到了以下 http://msdn.microsoft.com/en-us/library/ms731092.aspx

注:在IIS消費網站使用Windows身份驗證:啓用,ASP.NET模擬:啓用

感謝

回答

1

我的建議是轉換爲netTCP並使用證書認證。僅將證書與訪問Web服務的網站共享。下面的鏈接將幫助您實現安全證書在WCF

http://www.codeproject.com/Articles/36683/9-simple-steps-to-enable-X-509-certificates-on-WCF

+0

所以你說的https證書符合要求,不是嗎? – Lijo

+1

不,我建議帶證書的netTCP作爲你的消費者是一個.net網站。如果你使用https,我認爲任何人都可以打該網址並下載證書。 –

+0

假設我使用傳輸證書類型作爲「證書」,它是否符合我的要求?也就是說,只有擁有客戶端證書的用戶才能訪問該服務? – Lijo

1

可以簡單的解決方案是否使用Http Headers,並在客戶端發出請求時在頭中添加一些授權密鑰。在服務器上檢查授權密鑰的請求標頭。如果沒有找到密鑰,請對服務進行故障排除。檢查this的帖子,它解釋瞭如何在創建服務的代理時添加標題。

建議

您可以刪除元數據端點(墨西哥),設置httpGetEnabledfalse,這樣一來,沒有人會能夠創建服務的代理。

希望這可以幫助你。

+0

試圖改變安全模式在配置運輸。檢查[this](http://msdn.microsoft.com/en-us/library/ms729700.aspx)。通過使用https來保護傳輸層。我想這應該適合你。 –

+0

也檢查此[WCF綁定需要HTTPS](http://weblogs.asp.net/srkirkland/archive/2008/02/20/wcf-bindings-needed-for-https.aspx) –

+0

即使我們使傳輸層安全,在同一個網絡中未完成的人可以使用它,對吧? – Lijo