2013-02-20 51 views
2

我正在開發API並考慮使用OAuth(3-legged方法)進行身份驗證和授權。API身份驗證和授權OAuth 3方法:我正確地做對了嗎?

這是基本的想法:

  • 爲了使客戶端(移動應用或Web應用程序),使用此REST的API,用戶將在使用身份提供商/服務器,如谷歌被記錄, Facebook的等

基本上3方將在這裏進行交互:

  • 移動/ Web應用程序:將上Ë嘗試訪問自己的API
  • 的API:包含數據的應用程序來運行該網站
  • 身份服務器:這將允許用戶以訪問API登錄該網站

現在,我理解這個過程的方式(假設我是這樣做的)。這將是流程(彙總):

  • 用戶將嘗試從API(消費者)訪問數據;
  • 消費者發現用戶未登錄;
  • 用戶獲取一個頁面(帶有服務提供商按鈕,如使用Google登錄);
  • 用戶點擊按鈕,服務提供商返回登錄表單;
  • 用戶登錄;
  • 服務提供商返回一個請求特定權限的頁面;
  • 用戶授予權限;
  • 服務提供商向用戶返回訪問令牌;
  • 用戶使用訪問令牌再次嘗試請求消費者(API);
  • 消費者獲取令牌並根據服務提供者進行驗證;
  • 消費者授予用戶訪問權限。

首先

這是正確的過程(在更高層次上),或者我已經完全誤解了整個事情。如果不正確:你可以提供一些調整嗎?

這整個過程之後。消費者如何與用戶溝通?我需要在每個請求(在移動應用程序和API之間)傳遞令牌嗎?或者我可以只使用服務提供商的用戶詳細信息來識別用戶?

爲什麼說消費者(API)驗證通過對服務器的用戶提供的令牌?這是否已經在OAuth中實現,還是我必須自己做?

第四和最後一個

在實施方面,這將是客戶端(移動應用程序/ Web應用程序)和消費者(API)有什麼區別?

我對此很陌生,我試圖在PHP(API)中實現它。如果您有任何對PHP代碼(示例實現)或外部資源的引用,我將非常感激:-)

回答

1

我也是oauth的新手,但我會盡力提供幫助。 首先,您可以看看here以獲取可能有所幫助的適當庫。

至於我你的oauth流是正確的。一個很好的解釋你也可以找到here。 請記住,授權服務器應返回用於獲取訪問令牌的授權碼。

所以你的問題:

1)按照第二個鏈接,還有 - 「授權碼」。

2)隨着每個請求你的API,你應該發送你的訪問令牌。類似於

http://<your api>?access_token=7f813af1-381d-4dd7-b70b-b6a8399b2c00 

3)只需使用第一個鏈接的庫。我希望他們已經實施了這個。 :)

4)不能準確理解你的意思。您的客戶必須能夠獲取訪問令牌,將其存儲併發送請求。您的API服務器必須能夠從客戶端接收訪問令牌,並且如果訪問令牌正確,則可以訪問API。

+0

謝謝乍得。抱歉耽擱了。我想在執行這個線程之前首先執行這個操作,以確保我明白了。到現在爲止還挺好 :-) – Sthe 2013-03-11 08:38:55