2016-06-08 68 views
0

我有一個使用帶授權授予類型資源所有者密碼憑證的oauth2的客戶端應用程序。當用戶提供她的憑證時,我寫了一個curl http請求來獲取訪問令牌,但是當第一個憑證過期時如何請求另一個訪問令牌。我讀到,估計訪問令牌的有效性是很好的。 I found this client library,但我認爲它不會解決我的問題,即一旦新訪問令牌過期或者即使刷新令牌過期也會請求新的訪問令牌。在消費者處理OAuth 2.0令牌過期

任何人都可以指出我正確的方向如何實現這一點或使用一個庫,爲此目的?

回答

0

您可以處理令牌過期錯誤並執行刷新令牌請求來獲取新的訪問令牌,而不是檢查每個資源請求的令牌過期。

oAuth服務器在訪問令牌無效,過期或撤銷時,通常應在其響應中提及invalid_grant。請參閱here。您應該檢查您的oAuth服務器在令牌過期時它準確提供了哪些響應。

一些圖書館確實包括這個功能,但是我沒有找到你提到的圖書館。我用Retrofit作爲java客戶端,它有這個。您可能需要爲您提到的圖書館申請此功能。

如果刷新標記已過期,oAuth授權流程應該重新開始。

0

您收到的OAuth2令牌將具有持續時間。每個令牌在設定的時間後過期,並且該信息作爲您收到的對象的一部分發回。因此,您可以將其存儲在本地並重復使用,直到過期時間過去。 一旦過期了,你有兩個選擇:

  1. 請求另一個令牌
  2. 刷新現有令牌。很多OAuth2提供商都提供此功能。

唯一的問題是,如果你使用的庫有內置的。如果不是你可以自己添加它。

編輯

,如果你想存儲令牌地方,那麼會議將工作。當用戶在主機本身設置超時到期時關閉瀏覽器位時,會話不會過期。公平地說,如果他們稍後重新打開應用程序,他們將不得不再次登錄,然後您可以請求另一個令牌。如果您決定使用刷新令牌功能,那麼將其存儲在數據庫本身並從中使用它是有意義的,因爲這是一個長期的事情,不是基於會話的事情。

+0

是存儲訪問令牌和過期時間的不錯選擇嗎? 但在這種情況下,如果用戶關閉他的瀏覽器,他需要再次進行身份驗證。 我可能使用cookie來記住用戶認證。 我說的是對的還是什麼? –

相關問題