gpt4 book ai didi

amazon-web-services - AWS Amplify React GET 请求错误 - 缺少身份验证 token

转载 作者:行者123 更新时间:2023-12-02 02:50:43 34 4
gpt4 key购买 nike

我在我的 React 应用程序中使用 AWS Amplify 来调用我在 API Gateway 中托管的 API,并使用 AWS_IAM 授权。当我将授权设置为 NONE 时,我的 React 应用程序中一切正常。
但是,当我将授权设置为 AWS_IAM 时并使用 API.get() 执行我的 API从放大像下面的代码:

const notes = await API.get('notes', '/notes', init);
我收到一条错误消息,如:
{
"message": "Missing Authentication Token",
"err": "missing auth"
}
所以我尝试使用 aws-api-gateway-cli-test 来测试我的 API 网关。通过脚本,我能够获得有效的凭证、经过身份验证和正确的响应。我还使用我的管理员凭据尝试了 POSTMAN,它也能正常工作。
在做了一些研究之后,我看到人们把这个提到 CORS 问题。我已经仔细检查了我的 API 网关设置并确认我已启用 CORS。同样的问题仍然存在。
通过 aws-amplify 的调试功能,我能够在 Chrome 检查器中看到签名过程。使用一些 accessKey 和 secretKey 正确执行了签名过程。我把那些 key 从检查员那里拿出来放到我的 postman 那里,并试图拿到。
这些凭据无效,我收到以下错误消息:
{
"message": "The security token included in the request is invalid.",
"err:": "default"
}
更新:我忘记将 session token 复制到 POSTMAN 中。现在,使用我的应用程序生成的所有凭据,我可以从 POSTMAN 中的 API 获得正确的结果。只是不在我的应用程序中。
在这一点上,我很明显这是一个身份验证问题。但是,我一直在使用 aws-amplify 进行登录和获取过程。很确定签名过程是通过在幕后放大来完成的。
我在这个问题上花了 3 天的时间,基本上什么都试过了……关于为什么它不起作用的任何想法?
附言很多人认为调用 URL 中的拼写错误可能会导致此问题。我已经仔细检查过,没有错字。下面是我的放大配置代码:
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: config.cognito.REGION,
userPoolId: config.cognito.USER_POOL_ID,
identityPoolId: config.cognito.IDENTITY_POOL_ID,
userPoolWebClientId: config.cognito.APP_CLIENT_ID
},
Storage: {
region: config.s3.REGION,
bucket: config.s3.BUCKET,
identityPoolId: config.cognito.IDENTITY_POOL_ID
},
API: {
endpoints: [
{
name: "notes",
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION
}
]
}
});

最佳答案

刚刚解决了我的问题 - 我已经将 OPTIONS 方法的授权设置设置为 API Gateway 中资源下的 AWS_IAM。但是,当我的浏览器发送请求时,它会首先向 OPTIONS 发送一个请求,以检查没有此请求中的凭据的某些 header 。

由于我使用 IAM 授权设置了 OPTIONS,因此 OPTIONS 方法然后在没有我的凭据的情况下使用此请求检查 IAM。这就是我收到“缺少身份验证 token ”的原因。

关于amazon-web-services - AWS Amplify React GET 请求错误 - 缺少身份验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371654/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com