AWS Cognito - lambda 中间歇性无效的安全令牌

问题描述

我创建了一个 REST API 作为 Amplify 项目的一部分。为了检索经过身份验证的用户用户名,我尝试从 Cognito 检索完整的用户对象:

const IDP_REGEX = /.*\/.*,(.*)\/(.*):CognitoSignIn:(.*)/;
const authProvider =
  req.apiGateway.event.requestContext.identity
    .cognitoAuthenticationProvider;
const [,userId] = authProvider.match(IDP_REGEX);

const cognito = new AWS.CognitoIdentityServiceProvider();
const listUsersResponse = await cognito
  .listUsers({
    UserPoolId: process.env.AUTH_LAMBDAUSER********_USERPOOLID,Filter: `sub = "${userId}"`,Limit: 1,})
  .promise();
const user = listUsersResponse.Users[0];

我已通过 Amplify CLI 授予完全身份验证权限,并在 cloudformation 模板中进行了验证。

当我通过我的 React 应用程序调用 API 时,lambda 大约有一半的时间可以检索相关的用户记录。其余时间,会抛出 UnrecognizedClientException

UnrecognizedClientException: The security token included in the request is invalid.

客户端 POST 请求:

const params = {
  body : {"myParam": value}
}
API.post('********','/publish',params)
.then((res)=>{
  // do something
})
.catch(error => { 
  // handle error
});

为什么这个错误只是偶尔出现?从我日志中的请求标头中,我可以看到安全令牌在多个相同调用中保持不变的示例,但仅每隔一次尝试就会抛出异常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)