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