【发布时间】:2018-07-30 22:52:17
【问题描述】:
我正在为我的网站使用 AWS。 1 小时后令牌过期,用户几乎无能为力。
现在我正在尝试像这样刷新凭据:
function getTokens(session) {
return {
accessToken: session.getAccessToken().getJwtToken(),
idToken: session.getIdToken().getJwtToken(),
refreshToken: session.getRefreshToken().getToken()
};
};
function getCognitoIdentityCredentials(tokens) {
const loginInfo = {};
loginInfo[`cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX`] = tokens.idToken;
const params = {
IdentityPoolId: AWSConfiguration.IdPoolId
Logins: loginInfo
};
return new AWS.CognitoIdentityCredentials(params);
};
if(AWS.config.credentials.needsRefresh()) {
clearInterval(messwerte_updaten);
cognitoUser.refreshSession(cognitoUser.signInUserSession.refreshToken, (err, session) => {
if (err) {
console.log(err);
}
else {
var tokens = getTokens(session);
AWS.config.credentials = getCognitoIdentityCredentials(tokens);
AWS.config.credentials.get(function (err) {
if (err) {
console.log(err);
}
else {
callLambda();
}
});
}
});
}
问题是,1 小时后,登录令牌刷新没有问题,但 2 小时后我无法再刷新登录令牌。
我也尝试过使用AWS.config.credentials.get()、AWS.config.credentials.getCredentials() 和AWS.config.credentials.refresh()
这也不起作用。
我收到的错误消息是:
配置中缺少凭据
登录令牌无效。令牌过期:1446742058 >= 1446727732
【问题讨论】:
-
你是通过这个authentication flow获得你的令牌吗?如果是这样,你必须在调用GetOpenIdTokenForDeveloperIdentity时配置一个TokenDuration@
-
凭据的最长持续时间为 1 小时。这是我设置的。
-
因此您需要向您的开发者身份请求另一个
-
访问令牌通常会在 3600 秒后过期,之后我们需要使用“刷新令牌”进行另一个 api 调用,以再次获取访问令牌(一个新的)。跨度>
-
@InnocentCriminal 我在尝试你刚才提到的 2 天后,仍然无法正常工作。
标签: javascript amazon-web-services amazon-cognito