Обработка истечения срока действия токена обновления amazon -ognito-identity-js

При получении токена идентификатора через сеанс get, когнитивная идентификация 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, поскольку, когда токен обновления действителен, он автоматически обновляет токен доступа, и сеанс снова становится действительным.


person GC268DM    schedule 17.08.2018    source источник


Ответы (1)


При входе в 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().

Надеюсь, это поможет кому-то там :)

person GC268DM    schedule 20.08.2018