目前,我有一个 AWS API Gateway REST API,它具有使用 AWS_IAM 身份验证保护的 lambda 端点。目前,我的客户正在成功调用此端点并返回有效响应。
我现在尝试在此 REST API 前面引入一个代理 API 网关,并更新客户端以通过此代理调用端点。对于我的 REST API 上未经身份验证的端点,代理工作正常,但对于使用 AWS_IAM 保护的端点,我收到 403 错误和响应
{"message":"Missing Authentication Token"}
除了调用的 URL 之外,对代理的请求或直接对 REST API 的请求是相同的。有谁能够解释为什么会出现这种情况以及我该如何解决它?
您在使用代理 API 网关时遇到的 AWS_IAM 身份验证错误(“缺少身份验证令牌”)问题可能与 AWS 签名版本 4 (SigV4) 身份验证过程有关。
AWS 签名版本 4 依赖于整个 HTTP 请求的签名,包括特定标头。引入代理后,代理通常会修改请求或向请求添加标头。如果代理以影响 AWS 签名的方式更改标头,则签名将不再有效,从而导致 403 错误。
要解决此问题,请考虑以下步骤: