2010-04-16 89 views
1

我有一個用.NET編寫的Web服務,它爲iPhone應用程序提供數據。它也將允許應用程序進行「預約」。如何保護.NET Web服務以供iPhone應用程序使用?

目前,這一切都是企業網絡的內部,但顯然當iPhone應用程序發佈時,我需要確保Web服務在外部可用。

我將如何去保護Web服務?

有兩個方面我期待到:

  • 身份驗證訪問Web服務
  • 保護的數據被轉移

我沒有那麼困擾有關數據被反覆傳遞,因爲無論如何它都可以在應用程序中看到(這是免費的)。我面臨的關鍵問題是阻止用戶訪問Web服務並自行進行預訂。

目前我正在考慮加密來回傳遞的XML數據中的任何字符串,以便只有客戶端可以有效地使用Web服務,以避免身份驗證需求併爲數據提供保護。這是我見過的唯一模型,但我認爲iPhone和甚至Web服務的開銷會導致糟糕的用戶體驗。

回答

2

https是簡單的答案,但您不僅應該爲服務器提供自己的 證書,而且還要爲每個移動設備提供一個證書。這允許相互認證。

如果你不能做到這一點,你可以使用AES從iPhone 消息登錄到服務器,只使用已知的服務器和iPhone共享的祕密,但 純絕不會發送:

簽名= AES(數據+ iPhone的UDID +共享密鑰) (或大意的東西)

您應選擇一種方式來分發祕密 ,使您可以驗證其他部分。

+0

謝謝dwery,除了使用UDID來計算每小時的保留數外,我還沒有考慮過相互認證。我將致力於創建簽名並使用AES以及https。如果我想出一個解決方案,我不會爲這個問題回過頭來擔憂,我會爲此歡呼 – 2010-04-26 08:50:16

5

只需使用https即可進行Web服務調用。然後,您可以使用任何您想要的身份驗證,並且可能會收到一個將傳遞給後續Web服務調用的令牌。然後您的驗證細節和您的數據將得到保護。會有一些開銷,但它不應該是巨大的。

+0

嗨s1mm0t,我想我們將嘗試https加密傳輸中的數據。所以你得到一個upvote謝謝。至於認證,我不知道我想要什麼,這就是爲什麼我要求提出想法,所以爲答案而歡呼,但我接受dwery的意見,正如我指出的那樣。 – 2010-04-26 08:46:19

0

我寧願加密(Base64/AES)+ HTTPS。 oData,oAuth認證也可以使用。