我将AWS Cognito用作android应用程序的mu身份验证提供程序,并且我在用户池上设置了30天的刷新令牌到期时间。
我收到的访问令牌有效期最长为1小时,因此如果用户离开应用程序并在1小时内返回,我可以通过在getCurrentUser()
上调用CognitoUserPool
来自动续订用户会话
但是,如果用户在几个小时后回来,我想使用缓存的刷新令牌,这样他们就不需要不断地重新登录。CognitoUserPool文档指出,只有在使用刷新令牌时,它才会使用而访问令牌仍处于活动状态。
这不是破坏刷新令牌的目的,还是仅在访问令牌处于活动状态时才使用刷新令牌?
如果不能使用刷新令牌来进行新会话,应用程序如何使用户一次登录一天/几周/几月?他们是否将密码存储在设备上?
答案 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将在内部使用刷新令牌来生成新会话,而无需传递任何密码。