Android上的AWS Cognito-如何从刷新令牌获取新会话

时间:2018-07-01 05:04:54

标签: android amazon-web-services security authentication aws-cognito

我将AWS Cognito用作android应用程序的mu身份验证提供程序,并且我在用户池上设置了30天的刷新令牌到期时间。

我收到的访问令牌有效期最长为1小时,因此如果用户离开应用程序并在1小时内返回,我可以通过在getCurrentUser()上调用CognitoUserPool来自动续订用户会话

但是,如果用户在几个小时后回来,我想使用缓存的刷新令牌,这样他们就不需要不断地重新登录。CognitoUserPool文档指出,只有在使用刷新令牌时,它才会使用而访问令牌仍处于活动状态。

这不是破坏刷新令牌的目的,还是仅在访问令牌处于活动状态时才使用刷新令牌?

如果不能使用刷新令牌来进行新会话,应用程序如何使用户一次登录一天/几周/几月?他们是否将密码存储在设备上?

1 个答案:

答案 0 :(得分:1)

Cognito SDK在内部使用刷新令牌刷新当前用户会话:

//get CognitoUser instance by passing userName or emailID

CognitoUser cognitoUser = cognitoUserPool.getUser(userName);

//simply get User Session again and in your authenticationHandler, handle userSession obtained
cognitoUser.getSessionInBackground(authenticationHandler);

getSessionInBackground将在内部使用刷新令牌来生成新会话,而无需传递任何密码。