2015-07-10 67 views
2

我開發一個Android應用程序,我有點糊塗了關於令牌和刷新令牌。 現在基本上,用戶使用手機號碼和短信發送代碼登錄後,認證服務器會返回一個訪問令牌,用於訪問所有apis。對於認證服務器,我使用了帶有jwt-auth庫的Laravel。 當訪問令牌將過期時,我將使用AccountManager中存儲的用戶憑證詢問新的訪問令牌。 這是否是實現此身份驗證的正確方法?的Android刷新令牌

還是我錯過了刷新令牌,我問什麼時候該到期了新的訪問令牌?

由於提前, 丹尼爾

+1

永遠不會存儲用戶憑據在本地數據庫。你應該使用刷新令牌。 –

回答

6

我覺得這是更好地使用這兩種tokenrefresh token,所以你並不總是有當你access token過期發送您的憑據。此外,將用戶憑證存儲在客戶端設備上並不安全,您應該將這些信息存儲在服務器上,並要求用戶在需要時鍵入。

在這裏,我如何實現令牌/刷新令牌過程:

1:你把你的credentials到您的認證服務器(它會送你回一個access token(我用的是JSON web token型至極沒有存儲在數據庫中)和refresh token(存儲在數據庫中)

2:當你讓你檢查你的服務器的請求,如果access token已過期,如果是這樣,你讓你的認證服務器的請求與refresh token在參數爲了有一個新的access token(取決於配置你的服務器的離子可能還給你是否有新access token,或者一雙新access tokenrefresh token我喜歡)。

3:如果refresh token已過期,請向您的credentials請求一個新的令牌對。

+0

感謝Frederic。最後我用laravel(https://github.com/tymondesigns/jwt-auth/wiki)的JWT-auth庫進行此過程: 1.用戶將他的憑證發送到auth服務器 2.與我創建的庫的訪問令牌 3.我喜歡存儲在的AccountManager類的Android 4的密碼,此令牌當令牌過期我要求如果新令牌的請求失敗,我要求用戶重新發送憑據使用它 5.一個新的。 您認爲這是一個正確的過程嗎? – Lic

+0

通常,我們使用刷新令牌來限制通過電線向auth服務發送的客戶端證書的使用。 「訪問令牌的生存時間越短,客戶端證書越需要用來獲取新的訪問令牌,因此攻擊者必須破壞客戶端證書的機會越多。因此,如果您擁有一次性刷新令牌,您可以使訪問令牌的ttl任意小,而不會影響客戶端憑據。「在http://stackoverflow.com/questions/3487991/why-does-oauth-v2-have-both-access-and-refresh-tokens –

+0

您可以指向哪裏,這是實現了一個教程? – suku