2013-04-22 63 views
1

我正在使用App Engine(Java),OpenId(用於Google登錄等)和OAuth2實現我的Web應用程序的身份驗證部分(用於Facebook登錄)。重要的要求包括「保持我的簽名」和每個用戶對數據存儲的安全訪問。使用OpenID和OAuth2進行Web應用程序的最新會話管理

在我的理解中,爲了實現「keep me signed」功能,我需要一個cookie來存儲在服務器端(App Engine)生成的共享密鑰。此外,爲了保護對數據存儲的訪問,每次調用API時,每個REST API調用都需要額外的參數(即共享密鑰)來標識用戶。這種會話管理是否仍然支配着現代Web應用的發展?一個更普遍的問題是:會話管理是否在REST存在的情況下過時了,這會導致無狀態?我可能會誤解這裏的幾個重要概念。感謝您的指導和有關資源的指示。

回答

3

在談論OAuth時,還有另一種方法來查看保留我登錄的功能。

當一個應用程序使用OAuth,並在用戶認證和授權 - 應用程序得到一個Access tokenRefresh token.這是基本的OAuth的認證流程。

現在,應用程序可以代表用戶通過提供帶有HTTP調用的Access令牌來調用REST API。訪問令牌通常是短暫的,通常是60分鐘。因此,您的應用可以使用該令牌進行60分鐘的認證呼叫 - 這足以讓您在60分鐘內簽名。

之後會發生什麼?

每個OAuth服務提供商(例如Facebook,Google等)都將提供令牌交換端點 - 另一個REST API。您可以將刷新令牌交換爲刷新令牌+訪問令牌對。現在再次,無論何時使用應用程序,並且訪問令牌已過期,只需點擊令牌交換端點並獲取新的訪問令牌即可。

刷新令牌不會過期,直到用戶明確登錄到服務提供商的網站並撤銷您的應用的權限。

+0

+1有趣的觀點! – 2013-04-26 04:06:06

相關問題