2017-10-11 44 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。

相关问题