【发布时间】:2021-09-12 13:53:07
【问题描述】:
访问令牌的有效期为 1 小时。 我知道如何使用刷新令牌来更新访问令牌。 但是,我不知道如何检查 cognito 访问令牌是否已过期。
模式1:通过计时器线程测量令牌认证以来的时间。
-> 浪费CPU资源...
模式2:记录认证时间并比较当前时间。
模式 3:使用 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();
}
}
- 适用于 C++ 的 AWS 开发工具包
- Visual Studio 2017
【问题讨论】:
-
SDK不会自动为你刷新令牌吗?
-
不,它不会刷新。我选择将访问令牌保存在成员变量中,因此它不会自动更新。我查看了这个链接的源代码。 gist.github.com/manishpin/f7d8e9af84068bd9b0220bb2c7d14a4d我通过“challenge_request.GetResult().GetAuthtiencationResult().GetAccessToken()”获得访问令牌。
-
最好的方法是在访问令牌过期时不打扰。只要有一个try catch方法,如果你得到过期的错误调用刷新令牌api并获取新的访问令牌并存储它。
-
这是个好主意。我会尝试使用 try-catch。
标签: c++ amazon-web-services amazon-cognito