2010-10-05 114 views
7

我正在開發一個REST API,供開發人員編寫移動應用程序使用。用戶將能夠使用第三方服務(Google,Twitter等)進行身份驗證,這主要由OAuth處理(取決於所討論的服務)。我們在客戶端應用程序和API服務器(消費者密鑰/祕密是應用程序特定的,開發人員在應用程序註冊時從我們的網站獲取它)之間使用雙腿OAuth。如何實現無狀態REST API

我的問題是如何處理以無狀態的方式跟蹤用戶身份驗證。我沒有要在每個請求中發送的用戶憑據。我可以在用戶登錄時創建一個唯一的session_id,然後在REST API的每個請求中都要求它。有沒有其他解決方案來解決我的問題?是否使用唯一的session_id來標識用戶從無狀態REST API透視圖中導致任何問題?

+2

我仍在消化約翰維蘭德的這篇好文章。也許它也可以幫助你。 http://appsandsecurity.blogspot.com/2011/04/rest-and-stateless-session-ids.html – RayLuo 2013-04-17 13:58:14

回答

10

聲明:我不是安全專家。

不要稱之爲session_Id。將其稱爲身份驗證令牌,並使用您自己的身份驗證方案將Authorization HTTP頭傳遞給它。例如,請參閱Google AuthSub

不要將此身份驗證令牌用於識別用戶以及確定他們是否被授權執行請求之外的任何操作。不要將任何狀態與令牌相關聯,也不要根據它檢索用戶首選項。

+0

感謝您的輸入 – Andreas 2010-10-07 12:02:21

+1

爲了驗證我對此的理解,會話令牌仍需要服務器端的會話狀態?即,會話的生存期由服務器管理,並且令牌在服務器端會話超時後無效?我正在尋找一種方法來實現類似的目標,同時在服務器上沒有「會話」的概念。 – Aron 2011-02-10 20:24:03

+1

這也是我真的不明白。每個人都在談論安全性和無狀態,但無論如何,用戶的會話必須在服務器上進行。 – Gambo 2011-08-25 12:12:58