2012-02-29 85 views
6

我想爲移動客戶端添加一個REST接口到Django。移動客戶端將通過HTTPS使用JSON。我一直無法找到用於移動設備的「最佳」方式。從四處搜索,似乎#2更有利於#1:如何保護移動應用程序的REST API?

  1. 使用HTTP身份驗證並建立基於cookie的會話。所有事務都將通過HTTP進行,而JSON消息將僅包含命令或數據。
  2. 將每個JSON消息中的用戶名和密碼(加密的)傳遞給所有事務,並且不要依賴基於cookie的會話。

回答

1

數字2是更可取的,而不是推出自己的,我會建議使用OAuth身份驗證,如果可能的話。客戶端和服務器庫現在都可以在大多數平臺上使用。詳情請查詢http://oauth.net

+0

任何鏈接到設計這個問題的文檔/模式? – QED 2012-02-29 23:07:44

+0

我肯定會從上面提到的Oath.net網站的「入門」部分開始。它可以鏈接到今天可用的大部分OAuth信息。 – 2012-02-29 23:12:14

+0

糟糕,我的意思是REST – QED 2012-02-29 23:44:50

3

除非您希望將這些服務提供給其他開發人員(他們將代表您的最終用戶訪問),否則OAuth會過度使用。更好的選擇2,但我會建議使用摘要式身份驗證而不是密碼身份驗證。把它和SSL結合起來,你絕對會很好。

0

只要你使用真正的加密,而不是base64或一些自制的混淆算法,#2是好的,花花公子。您可能還想考慮許多公司採用的路線,即將API密鑰綁定到用戶名。

+0

如果所有內容都以SSL方式發送,是否還需要加密? – ewhitt 2012-03-01 09:13:08

+0

SSL是加密。它只是在通信堆棧的不同層加密 - SSL加密整個通信通道而不是僅僅選擇特定消息的內容。因此它通常更昂貴。做這兩件事可能會浪費資源。 – QED 2012-03-01 18:36:51

8

我建議首先用登錄電話發送用戶名/密碼。 JSON將傳回一個authToken或accessToken,移動設備將爲其後的所有呼叫返回。然後您將檢查以確保authToken有效。這是許多API所採用的方法。在他們的數據庫中,他們將API密鑰綁定到他們登錄的用戶帳戶。

+0

謝謝。我喜歡這種方法。這種截斷類型有一個名字或我可以進一步偶然的谷歌? – ewhitt 2012-03-02 03:09:36

+0

@ewhitt它被認爲是基於令牌的認證http://upcoming.yahoo.com/services/api/token_auth.php – Bot 2012-03-02 16:16:46

相關問題