如何排查 API Gateway REST API 端点的 403“Missing Authentication Token”(缺少身份验证令牌)错误?

上次更新日期:2023 年 1 月 6 日

我尝试调用 Amazon API Gateway REST API 时,不断收到 403“Missing Authentication Token”(缺少身份验证令牌)错误消息。如何排查这些错误?

简短描述

API Gateway REST API 端点返回 Missing Authentication Token(缺少身份验证令牌)错误的原因如下:

要排查 API Gateway 的其他类型 403 错误,请参阅如何排查来自 API Gateway 的 HTTP 403 错误?

解决方法

确认 API Gateway 资源路径中配置了方法和资源

按照使用 API Gateway 控制台设置方法中的说明进行操作。有关更多信息,请参阅设置 API 资源

重要提示:您必须部署 API 以使更改生效。

对于请求方法发送到根资源的具有代理资源集成的 API,请验证根资源下是否配置了方法。

确认 API Gateway 响应未经修改或后端集成未发送响应

确保未在 API 中修改网关响应。另外,请确保错误不是来自集成后端。查看 API Gateway 执行日志和后端日志

如果 API 方法已启用 IAM 身份验证,请确认 API 请求是否已签署

有关更多信息,请参阅 Signing AWS API requests(签署 AWS API 请求)和 Elements of an AWS API request signature(AWS API 请求元素签名)。

确认您向 REST API 端点发送正确的 HTTP 方法请求

从 Web 浏览器测试 REST API 终端节点会自动发送 GET HTTP 方法请求。

若要测试 POST HTTP 方法请求,请使用不同的 HTTP 客户端。例如:Postmancurl

使用 POST HTTP 方法请求的 curl 命令的示例

$ curl -X POST  <API URL> -d <request body>

使用 JSON 标头发送请求的示例

$ curl --location -X POST 'https://1234WXYZ.execute-api.us-east-1.amazonaws.com/stage/lambda_proxy' --header 'Content-Type: application/json' --data-raw '{"x":"y"}'

使用 AWS V4 签名身份验证发送 curl POST 请求的示例

$ curl -X POST "<ENDPOINT>" -d <data> --user <AWS_ACCESS_KEY>:<AWS_SECRET_KEY> --aws-sigv4 "aws:amz:<REGION>:<SERVICE>"
$ curl -X POST "https://1234WXYZ.execute-api.us-east-1.amazonaws.com/stage/lambda_proxy" -d '{"x":"y"}' --user ABCD:1234 --aws-sigv4 "aws:amz:us-east-1:execute-api"

这篇文章对您有帮助吗?


您是否需要账单或技术支持?