2012-04-30 16 views
0

我正在嘗試實現休息方法來設計我的Api。休息方法:用於在登錄後執行後續api調用

請通過下面的工作流程,並試圖清除我的疑慮,並指出mistakes-

  1. 客戶端(網頁瀏覽器)從客戶 REST調用 - > /後/登錄用戶名/密碼

  2. 服務器 /登錄與DB服務檢查如果用戶名&密碼是否正確 迴應OK:200 +發送回數據 - > X

  3. 客戶 接收確認用戶進行身份驗證+數據 - > X 現在使用的後續調用數據X服務器打通其他服務用戶的特定信息要求

/得/ FirstName_of_User/X 或

/得/ LastName_of_User/X

現在我懷疑有以下幾點(什麼是執行以下操作的最佳實踐)

  1. 因爲對於後續請求,我們需要告訴服務的數據是我們請求的X應該是什麼? (用戶名或創建的臨時令牌(不有道理的,因爲休息是所有關於無國籍)或別的東西嗎?)

  2. 一旦回到這個X應該在哪裏它被保存在客戶端,以便它可以被起訴每一個後續請求? (Cookie或其他方式存在)?

  3. ,如果這是我如何讓後續調用
    /得/ FirstName_of_User/X

,如果這一呼籲是有人做別人也那麼它將給結果,我想要的人剛登錄到只得到結果..

註冊懷疑3 - 我發現計算器此鏈接 - Is session used to REST authentication?

whic h建議使用HMAC並找到了這個鏈接 - http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,它討論了HMAC如何用於Rest(基本上談論在客戶端和服務器上都有私鑰並使用它來散列請求)。

My關於這種方法的疑問是 - 比方說,我使用密碼作爲客戶端和服務器都知道的私鑰。然後在客戶端,我們應該將密碼保存在cookies中,然後對每個後續請求進行哈希處理。

感謝 任何的懷疑,認識

任何幫助

PS:我試圖採用PHP + Mysql

回答

0
/user/id?access_token=42342342342423 

的REST API不需要任何SEO落實制度,所以降firstname_of_user,只需使用id,更簡單,更清潔,更少維護。

+0

根據您的示例 - 對於客戶端需要發送的任何後續請求 - > id - > accesstoken。 我的疑惑是 - 1>客戶端在哪裏存儲ID?作爲一個cookie? 2>您要遵循哪些步驟來生成訪問令牌?以及服務器在獲取訪問令牌時執行了哪些步驟? –

0

不知何故,您的要求和我們在項目中實施的內容除了不同的平臺外,看起來都是一樣的,我們的是.net。

使用用戶名和密碼對登錄資源執行同樣的過程。一旦你決定了你想簽署這個令牌的機制,它並不是強制性的,它總是附加在URL中。

  1. 不是在URL中發送令牌,而是使用http協議的授權頭嘗試它。使用Authorization = "Authorization" ":" credentialsRef

這樣你可以保持你的url相同,但基於認證你可以服務資源。

  1. 您可以將此令牌存儲在cookie中以備後續請求。

  2. 從url中刪除令牌解決了您的第三個疑問。

希望這可以幫助你一定程度上。