2012-10-08 79 views
0

我想將Android客戶端連接到WCF Webservice。有幾個很好的指導說明如何做到這一點,但https的概念對我來說真的很模糊。這是我想要的:使用Android客戶端創建WCF https服務器

1)通過https與經過身份驗證的客戶端通信的自託管WebService。 用戶數據庫駐留在SQL Server上。 該服務必須是「簡單安裝」,供任何用戶執行。 用戶將在他/她的PC上安裝服務,然後從谷歌下載客戶端使用ipadress配置它。

問題:使用WCF執行此操作似乎是不可能的,因爲wshttp看起來像需要在mashine上安裝證書。 一個可能的前進方向是在安裝過程中生成一個自簽名的證書,但是我怎麼能以友好的方式將證書頒發給android客戶端呢?

2)在Google Play上發佈的Android應用程序,可以與服務進行通信。發送到服務的數據將是簡單的數據類型(字符串和整數數據),也是大型二進制文件3-25Mb。

安裝服務的用戶沒有比他的IP地址更多的知識,也不能被任何證書問題或其他技術細節所困擾。一種選擇可能是使用消息,而不是運輸安全,但我的知識在這方面非常有限。

服務器和客戶端之間傳遞的信息是個人信息,可能包含密碼,包括使用密碼的匹配網站,個人信息,日曆事件等。它不包含匯款單,信用卡號或帳戶號碼。

服務器和客戶端的核心功能已經或多或少已經實現。我現在需要保護客戶端和服務器之間的通信。

任何建議,一個良好的方法來發展這將不勝感激!

+0

您是否期望Android應用的典型用戶擁有Windows PC並願意安裝SQL Server?你試圖存儲哪些數據以及爲什麼? – CodeCaster

+0

是的。用戶將執行與SQL沒有交互的服務的手動安裝。 SQL將存儲一些需要索引的100k +項目,並將從不同的角度進行查詢。但那部分ia已經在工作:)我遇到的最大問題是確保android客戶端和服務器之間的通信,以便客戶端需要對服務進行身份驗證,並以不易被攔截的方式執行上傳和下載。服務所保存的信息需要相當安全,並且還需要在客戶端和服務器之間發送信息。 –

+0

你爲什麼不提供這個數據作爲服務的託管?安裝時生成證書非常簡單,但我不知道如何批准Android中的自簽名證書。不過,如果您要在客戶端的PC上安裝SQL Server,並且信任自簽名證書只是爲了能夠運行您的應用程序,並最終通過IP連接,這意味着他們只能訪問它由於NAT在99.9%的互聯網連接中處於活躍狀態,因此從家中返回。我真的很好奇你在建什麼。 – CodeCaster

回答

0

我想將服務器服務部署到最終用戶的方式使得很難將WCF與ssl一起使用。其他選項 創建其他問題。我現在已經放棄了這個特定項目的WCF,轉而使用Bouncy Castle,SslSocket和一個自定義協議進行良好的舊套接字編程。這可能是矯枉過正,但卻讓我完全控制了身份驗證證書管理和正在發送的數據。 我使用ssl與自簽名證書,並重寫android中的cert驗證方法,手動驗證證書中的所有數據,除了替換主機名...對我來說足夠了,因爲我使用預共享密鑰來加密和解密數據。

感謝您的幫助