2013-04-04 162 views
0

我正在從Windows Phone 8和/或WinRT設備上的客戶端訪問小型服務,這需要適度的安全性。我的目標是創建一個在Windows Azure中運行的服務。WCF與HTTPS和Windows Phone 8

我的應用程序需要身份驗證驗證兩件事情: 1)客戶端

步驟1)我需要有一定的公平程度,調用該服務的應用程序的客戶端 2)用戶證書的真實性,實際上,我的客戶端應用程序。

步驟2)用戶需要在系統中擁有一個可以進行身份​​驗證的帳戶。我可以通過簡單地在接口中創建一個Login()方法來實現身份驗證(除非有更好的方法)。但是,爲此,客戶端和服務器之間的通信需要安全,因爲我不希望我的用戶名+密碼組合未加密。

我目前的觀點是,將它作爲WCF服務實現可能是一條路,因爲我可能會有更多的興趣將其移植到客戶端的其他平臺上,並且快速查看顯示,這有點受到支持。

但是,由於我對所有這些證書模糊不清,我的問題是我是否可以使用自簽名證書來保護我的連接?只有我的服務器和我的客戶需要能夠驗證真實性。此外,在WP8 + Windows Azure案例中究竟如何完成這些指示?

另一個問題是,假設一個漂亮的黑客從客戶端硬件中打開我的程序,他是否可以拿到證書並使用它創建他自己的客戶端,以(他)的用戶名/密碼登錄並執行我的操作原來的客戶?或者有沒有辦法在客戶端防止這種情況發生?換句話說,我的服務器可以根據我簽署的有效證書來確定客戶端軟件的真實性嗎?

回答

1

第1步幾乎是不可能的。無論您在代碼中使用哪種證明方法,都可以通過其他程序在代碼中複製它。

步驟2不需要WCF,但您可以在基本身份驗證中使用它。使用支持基本身份驗證的WebAPI公開RESTful服務也同樣簡單。對於WCF或WebAPI來說保護通信是一樣的 - 使用SSL。

WCF不喜歡自簽名證書,並將其配置爲使用它們會取消某些安全性,具體取決於您的操作方式。鑑於來自可信CA的SSL證書起價爲10美元左右,假如不獲得SSL證書,那將是一個虛假的經濟。 Azure網絡工作者支持SSL證書,並且Azure網站的支持即將到來,但沒有確定的日期。

最後,託管代碼中的客戶端證書可以合理輕鬆地提取出來,因此您不能依靠它來識別客戶端代碼。