2017-10-11 126 views
1

我正在開發將AWS Cognito用作身份提供程序的應用程序。因此,用戶在AWS Cognito Poo上進行身份驗證並獲取訪問令牌,訪問ID和刷新令牌。 然後用戶可以向我的應用程序發出後端請求。我使用Access Token驗證它,獲取Cognito AWS上的用戶配置文件並授權請求。如何使用Cognito上的令牌過期處理

問題是,Access令牌過期後,客戶端將過期的令牌發送到後端,後端應用程序會收到錯誤(令牌存在錯誤或未經授權)。

如何使此工作流程有效?

我在考慮向客戶端發送令牌已過期的消息,並且客戶將其刷新到Cognito Pool。這是正確的方法嗎?

回答

4

當您從Cognito用戶池獲得訪問令牌,標識和刷新令牌時,必須在本地緩存它。 Access和ID令牌有效期爲1小時,不得儘可能重複使用。

這些令牌是JWT令牌,並在其內部保留到期時間。您可以解碼JWT令牌並將該過期和令牌一起緩存。每次訪問令牌緩存時,還請檢查當前時間與緩存的到期時間。如果過期,請使用Refresh令牌獲取最新的Access和ID令牌,並再次緩存令牌和到期日。

如果您使用我們的AndroidiOSJavaScript的高級SDK之一,SDK爲您管理所有這些。

+0

你好,你可以提供一些關於使用刷新令牌刷新id令牌的提示。 –

+0

嗨,你可以找到更多的信息如何使用它們在這個鏈接上.http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity -providers.html。簡而言之,使用刷新令牌調用AdminInitiateAuth操作。 –

+0

@Chetan Mehta,iOS SDK(AWSCognitoIdentityProvider 2.6.7)不會自動刷新令牌,這裏是我在SO上的帖子https://stackoverflow.com/q/49142054/2534233 – user44776

2

你可以在這個鏈接上找到更多的信息。 http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

要使用刷新令牌來獲取新的令牌,使用 的AdminInitiateAuth API,通過REFRESH_TOKEN_AUTH爲 theAuthFlow參數和刷新令牌 的AuthParametersparameter與關鍵「REFRESH_TOKEN」。這會使用Amazon Cognito服務器啓動 令牌刷新過程,並返回 新的ID和訪問令牌。

簡而言之,使用刷新令牌調用AdminInitiateAuth操作。看看你喜歡的開發語言的SDK。