Amazon-Cognito-identity-js刷新令牌到期处理

时间:2018-08-17 09:45:06

标签: javascript amazon-web-services typescript amazon-cognito refresh-token

当通过访问会话获取ID令牌时,如果访问令牌已过期,则cognito身份js会自动使用其刷新令牌来检索新的访问令牌。但是,如果刷新令牌也过期,我想实现正确的处理,但是由于刷新令牌的最短到期时间为1天,因此很难测试。

很高兴知道是否存在:

  • 还有其他方法可以正确测试访问令牌和刷新令牌过期时的情况(以便测试重定向到登录页面的情况)

  • 调用哪个代码路径,或者如何捕获刷新令牌已过期的情况

代码:

getIdToken(callback: Callback): void {
if (callback == null) {
  throw("callback is null");
}
if (this.getCurrentUser() != null) {
  this.getCurrentUser().getSession(function (err, session) {
    if (err) {
      console.log("error: " + err);
      callback.callbackWithParam(null);
    } else {
      if (session.isValid()) {
        console.log("returning id token");
        callback.callbackWithParam(session.getIdToken().getJwtToken());
      } else {
        console.log("got the id token, but the session isn't valid");
      }
    }
  });
  } 
  else
    callback.callbackWithParam(null);
}

我的猜测是将调用got the id token, but the session isn't valid,因为当刷新令牌有效时,它将自动刷新访问令牌,并且会话再次有效。

1 个答案:

答案 0 :(得分:0)

登录到Kibana时,我收到以下消息:

com.amazonaws.services.cognitoidp.model.NotAuthorizedException: Refresh Token has expired (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: NotAuthorizedException; Request ID: ...)

在这种情况下,err分支将被称为

if (err) {
  console.log("error: " + err);
  callback.callbackWithParam(null);
}

因此,需要在那里执行刷新令牌到期的处理。但是,除了session.isValid()

之外,我都决定将用户重定向到登录页面

希望这可以帮助某个人:)