2013-07-22 64 views
13

我正在嘗試爲我的移動應用程序(iOS & Android)和API(PHP)處理用戶身份驗證的最佳方式。什麼是API令牌

從我所研究的選項是:

基本身份驗證通過HTTPS - 用戶爲每個請求的檢查用戶名/密碼。

會話 - 發送每個請求的會話ID;服務器保持狀態。因此,應用程序發送用戶名/密碼和服務器檢查後續請求中的登錄用戶,就像我的網站一樣。

API令牌 - 移動應用程序發送用戶名/密碼並接收回令牌,然後將其附加到後續請求。令牌存儲在數據庫中並在每個請求中進行檢查。

我猜我對API令牌的解釋不正確,因爲它們看起來與會話相同,因爲我將會話ID存儲在數據庫中。

  1. 我可以解釋API令牌的解釋嗎?他們是爲了什麼?它們與會話ID有什麼不同?
  2. API令牌的優點是什麼?
  3. oAuth(如果我們要簡化它的使用)只是創建「API令牌」的協議?

回答

16

我不是專家,但我給你一對夫婦美分我拿起的:

1)API令牌是有點總稱。通常,API令牌是請求訪問您的服務的應用程序的唯一標識符。您的服務將生成一個API令牌,供應用程序在請求服務時使用。然後,您可以將它們提供的令牌與您存儲的令牌進行匹配,以便進行驗證。

會話ID可以使用,但其用途與API令牌不同。會話ID不是一種認證形式,而是授權的結果。一旦用戶被授權使用資源(例如您的服務),通常會建立會話。因此,會話ID是在用戶被授予對資源的訪問權時創建的。 API令牌是與用戶名/密碼類似的認證形式。

2)API令牌是通過HTTP發送一些不安全的用戶名/密碼組合的替代品。然而,問題仍然存在,有人可以取而代之使用API​​令牌。

3)以某種方式是。這是保持API令牌「新鮮」的一種方法。當您要使用服務時,您不需要傳遞相同的API令牌,而是請求訪問令牌。所述的OAuth 2.0步驟如下:
      a)要求發送與某些種憑證
      b)中成功的響應返回到服務的另一個請求與由代碼
      C)以服務代碼
        d)成功的響應返回訪問令牌,用於從每個API請求籤名,直到完成。

很多較大的服務提供商目前都使用OAuth 2.0。這不是一個完美的解決方案,但它可能是目前使用的最安全,最廣泛的API安全方法。

+0

能否詳細說明「會話ID不是認證的形式,而是授權的結果」? – paul

+0

更新了我的答案,總之 - 會話ID不是一種認證形式,API令牌是。 –

+0

你是說API密鑰只是識別來自我的應用的請求,與用戶通過應用登錄無關?因爲從我讀過的API中應該是無狀態的,而不是使用會話。 – paul