2013-08-03 78 views
1

我希望我的REST API服務器能夠僅與我的iOS應用程序通信。用戶羣將不會超過1000人,而且市場總體上非常小而且不受歡迎。這就是爲什麼我認爲除了簡單的挑戰 - 響應身份驗證(HTTP,OAuth 2.0,SSL)之外的任何事情都是過度的。但我不確定這個認證應該如何流動。以下是我心目中:如何爲REST API身份驗證實施質詢 - 響應?

  • 客戶端應用程序(用戶)發送一個請求:api.example.com/auth?username=john
  • 服務器用隨機生成的字符串迴應說:「somerandomlygeneratedstring」
  • 客戶端接收字符串,將其附加到用戶名,然後附加一個祕密字符串,在應用程序中進行硬編碼並使用MD5對整個字符串進行散列。
  • 客戶端通過了串到服務器:api.example.com/auth?username=john &響應= thenewMD5hashstring
  • 服務器生成相同MD5哈希字符串,如果它們匹配,標記該用戶作爲數據庫中的驗證和來自該用戶的所有API請求將從現在開始處理。

我有正確的想法嗎?還是我完全錯了?請記住,我想要基本的安全性,對於這樣一個小型項目來說,任何太花哨的東西都是過度的。

另外,我沒有像個人信息那樣在我的數據庫中保存任何敏感數據。

回答

1

您應該簡單地通過Authorization標頭爲每個請求使用HTTP基本身份驗證,並通過SSL進行所有交互。如果你想要基本的安全性,那就沒有必要超越它了。

該計劃有幾個問題需要考慮。

  • 您的最後一步基本上是服務器端會話,這在REST中是不可接受的。
  • MD5已被有效破解,除了完整性檢查之外,不應該用於任何其他用途。
  • 在REST中,如果符合您的需要,您應該使用協議提供的標準化身份驗證方法。重新使用它來使用你想要的URI參數是不必要的。
  • 你想要的哈希方案只有在你想簽署請求時纔有意義,保證它沒有被篡改。