2013-07-23 269 views
1

我一直在嘗試實現自己的OAuth2提供程序,並且我有點卡在refresh_token部分。我想如何處理它?我應該檢查API中還是客戶端的refresh_token?如果我不清楚我給出一個場景:oauth2如何處理刷新令牌

假設我在API端checkToken函數檢查令牌是否無效或過期。我輕鬆通過無效測試。然後我檢查過期的部分。所以棘手的部分是在這裏爲我。在功能checkToken我應該補充

if(findRefreshToken($client_id, $user_id)) { 
    $this->grantRefreshToken($client_id, $client_secret, $user_id); 
} else { 
    $this->error(401, 'Token expired'); 
} 

或者我應該只有401錯誤和比對發現用它做什麼?

回答

1

這是我使用這個庫實現oAuth庫和api的經驗。

  1. 如果要實現它作爲一個庫,你需要有checkToken和refreshToken seperately.So的API(根據要求)可以決定是否刷新令牌或不同時檢查/ verifing令牌。

  2. 在api中進行操作時,它又取決於需求。如果要求用戶會話在上次訪問時應該處於活動狀態一段時間(比如4小時),那麼最好每隔一段時間刷新一次令牌你正在檢查/驗證令牌。客戶端可以完成同樣的刷新令牌,但問題是客戶端必須在每次api調用之後調用刷新令牌,這意味着每個API都會有2個調用。

希望這可以澄清。

+0

它非常有意義,我明白爲什麼我會分開保存它。我猜想做兩個電話更容易受到黑客攻擊。 – Gasim