2012-03-27 181 views
2

我有一個關於WCF web服務安全性的問題。目前,我們正在開發一個android移動項目,並使用wcf web服務進行數據傳輸和操作。 我們使用basicHttpBinding作爲Window服務承載Web服務。如何保護從Windows服務託管的WCF Web服務?

目前我們沒有任何安全模式,如果知道服務地址,我恐怕每個人都可以使用我們的Web服務。 例如,我們有一個服務方法,它將返回字符串值。目前,我可以將該服務添加到其他Visual Studio項目和移動項目中,我們可以隨時使用。

//WCF Service Method 
public string DoWork() 
{ 
     return "This is return string!"; 
} 

    //We can consume it like below from other dot net project by adding service reference. 
    //Actually, those are not real client. 
    ServiceReference1.WebServiceClient serv = new TestingPrj.ServiceReference1.WebServiceClient(); 
    string result = serv.DoWork(); 

我的問題是我如何確保我的網絡服務真正的客戶?我不希望其他項目和人員使用我們的Web服務。

+0

這裏有很多幫助:https://www.google.com/#q=securing+wcf+web+services – 2012-03-27 17:34:34

+0

我已經嘗試過,但大部分答案都是針對IIS中託管的web服務的。這就是爲什麼我在這裏提出問題。無論如何,感謝您的幫助。 – Chong 2012-03-27 17:51:36

回答

0

使用SSL證書是最安全的方法。

+0

ssl證書如何防止錯誤的用戶訪問服務? – mellamokb 2012-03-27 17:33:06

+0

我們將服務作爲窗口服務託管,我們不使用IIS服務器。 是否有可能以這種方式使用SSL cerficicates? – Chong 2012-03-27 17:33:48

+0

是的,您可以通過配置文件或將服務編碼爲HTTPS來完成。如果您在運行Windows服務的服務器上安裝了證書,則它應綁定到證書。 – mellamokb 2012-03-27 17:39:24

1

最簡單的方法是使用基於SSL的基本身份驗證。基本身份驗證要求客戶端有一個用戶名/密碼對,只有您的應用程序纔會知道。如果驗證純粹是爲了知道您的客戶端是否正確(而不是知道哪個用戶正在連接),那麼您可以使用一個硬編碼的用戶名/密碼。

也應該使用SSL,因此憑據不會以純文本形式傳輸線路,並且可能會被嗅探。