2013-08-16 184 views
0

我可以看到OAuth對於完全Ajax化的應用程序運行良好,因爲本地JS代碼可以始終將承載令牌重放到服務器。但是,如果我們有頁面刷新會發生什麼?在這種情況下,我假設我們丟失了令牌,然後通過OAuth重定向流程返回以獲得新的訪問令牌。這是否正確,並且有避免這種情況的模式,比如將訪問令牌存儲在HTML5本地存儲中?OAuth訪問令牌和頁面刷新

回答

0

如果您正在使用OAuth 2.0,那麼當您使用OAuth 2.0提供程序進行身份驗證時,您可能會同時請求a refresh token和訪問(或承載)令牌。刷新標記應直接返回到承載Web應用程序的服務器,以某種方式存儲(可能是會話狀態),並且不會向瀏覽器公開。瀏覽器可以使用訪問令牌向需要它的安全服務/端點發出請求,但它應該具有較短的生命週期(無論是否存在頁面刷新)。當它到期時(可能再次也可能不是由於頁面刷新),客戶端應用程序可以向傳遞刷新令牌的託管服務器發出請求。然後,服務器可以使用刷新令牌獲取新的訪問令牌,而無需用戶再次登錄。

OAuth 2.0規範的refresh token section中有這方面的圖表。

OAuth 2.0的使用方式有多種變化,細節可能會因您的特定場景和實施而有所不同,但希望能夠讓您高度瞭解如何避免在訪問時提示用戶重新進行身份驗證令牌到期或頁面重新加載。