问题描述
我创建了一个 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 (将#修改为@)