#c #amazon-web-services #amazon-cognito
Вопрос:
Токен доступа действителен в течение 1 часа. Я знаю, как использовать токен обновления для обновления токена доступа. Однако я не знаю, как проверить, истек ли срок действия токена доступа cognito.
Шаблон 1: Измерьте время с момента аутентификации токена с помощью потока таймера.
-> Пустая трата ресурсов процессора…
Шаблон 2: Запишите время аутентификации и сравните текущее время.
Шаблон 3: Проверьте использование пакета SDK AWS.
-> Как использовать?
Шаблон 4: другой путь.
Каков наилучший способ?
if ({ m_access_token is expired? })
{
Aws::CognitoIdentityProvider::Model::InitiateAuthRequest request;
request.SetAuthFlow(Aws::CognitoIdentityProvider::Model::AuthFlowType::REFRESH_TOKEN_AUTH);
request.SetClientId(m_client_id);
request.AddAuthParameters("USERNAME", m_user_name);
request.AddAuthParameters("REFRESH_TOKEN", m_refresh_token);
auto outcome = m_cognito_identity_provider_client->InitiateAuth(request);
if (outcome.IsSuccess())
{
m_access_token = outcome.GetResult().GetAuthenticationResult().GetAccessToken();
}
}
- AWS SDK для C
- Visual Studio 2017
Комментарии:
1. Разве SDK автоматически не обновляет токены для вас?
2. Нет, это не освежает. Я решил сохранить токен доступа в переменной-участнике, чтобы он не обновлялся автоматически. Я посмотрел исходный код по этой ссылке. gist.github.com/manishpin/f7d8e9af84068bd9b0220bb2c7d14a4d Я получаю токен доступа с помощью «challenge_request.GetResult(). getauthentiencationresult(). getAccessToken()».
3. Лучший подход-не беспокоиться, когда истечет срок действия токена доступа. Просто попробуйте метод try catch, в котором, если вы получите ошибку с истекшим сроком действия, вызовите api токена обновления, получите новый токен доступа и сохраните его.
4. Это хорошая идея. Я попробую использовать try-catch.
Ответ №1:
Я выбираю повторную попытку с помощью try-catch.
Потому что, если я использую метку времени, я должен использовать повторную попытку для обеспечения безопасности в конце концов.
Спасибо.