Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
651 views
in Technique[技术] by (71.8m points)

amazon web services - AWS Cognito - Intermittent invalid security token in lambda

I've created a REST API as part of an Amplify project. In order to retrieve the authenticated user's username, I attempt to retrieve the full user object from 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];

I've granted full auth permissions via the Amplify CLI, and verified in the cloudformation template.

When I invoke the API via my React app, the lambda can retrieve the relevant user record about half the time. The rest of the time, an UnrecognizedClientException is thrown.

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

Client POST reqest:

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

Why would this error occur only sometimes? From the request headers in my logs, I can see examples where the security token remains unchanged across multiple identical calls, but the exception gets thrown only every other attempt.

question from:https://stackoverflow.com/questions/65866103/aws-cognito-intermittent-invalid-security-token-in-lambda

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...