Как автоматически обновить Cognito Token на странице - PullRequest
2 голосов
/ 11 марта 2019

Я использую сервис AWS Cognito для аутентификации.В моем приложении Angular 7 я использую Amplify Auth для защиты своих страниц.

Если пользователь перемещается между различными страницами, Amplify автоматически обработает обновление токена и не увидит окончания срока действия токена.

Если пользователь остается на одной странице в течение длительного времени, токен не будет обновлен, и в итоге пользователь увидит токен с истекшим сроком действия и получит 403 за вызов веб-службы.

Есть ли хорошее решение для обновления токенов доступа / идентификатора, если пользователь долго остается на одной и той же странице?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

В документации по аутентификации Amplify: получить текущий сеанс они показывают, как это сделать с Auth.currentSession (), это возвращает Promise и обновляет токены по истечении срока действия. В данных, возвращаемых в блоке Auth.currentSession (). Then (), вы получаете объект CognitoUserSession с ключами iat и exp в idToken.payload, которые можно использовать для определения, когда истекает срок действия idToken или срок его действия истек. Вы можете использовать их в своей службе аутентификации для обновления токенов при необходимости.

0 голосов
/ 12 марта 2019

Если вы позвоните cognitoUser.getSession из Cognito Javascript SDK, это приведет к обновлению локальных токенов, если они больше не действительны.

Я думаю, у вас есть несколько вариантов:

1) Звоните cognitoUser.getSession перед каждым вызовом API. Это вызов async, поэтому убедитесь, что у вас есть результат, прежде чем продолжить вызов API. Если токены действительны, этот звонок будет очень быстрым и недорогим. Если вам нужны новые токены, для обновления токена может потребоваться секунда или две.

2) Сделайте вызов API, и если вы получите ответ 403, позвоните getSession, и как только у вас будет результат, попробуйте вызов API еще раз. Или, если вызов не так важен, просто обновите токен, установите какой-нибудь счетчик ошибок и, если он произойдет сбой в следующий раз, пометьте его пользователю в этот момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...