【问题标题】:How to check if a cognito access token has expired?如何检查 cognito 访问令牌是否已过期?
【发布时间】: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


【解决方案1】:

我选择通过 try-catch 重试。

因为,如果我使用时间戳,最后我应该使用重试来确保故障安全。

谢谢。

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2016-06-07
    • 2021-12-21
    • 2018-03-12
    • 1970-01-01
    相关资源
    最近更新 更多