微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。