关于亚马逊网络服务:CloudFront 缺少身份验证令牌错误

Missing Authentication Token Error with CloudFront & API Gateway

我已经设置了一个以 API 网关作为来源之一的 CloudFront 分发,并且此 API 网关配置了 AWS IAM 授权方。

当使用授权标头调用 CloudFront url 时,它会返回 403 错误。

1
2
3
{
   "message":"Missing Authentication Token"
}

但是,当调用 API Gateway url 而不是具有相同 Authorization 标头的 CloudFront url 时,它可以工作。

我还尝试通过 CloudFront url 在没有任何授权者的情况下调用端点并且它有效。关于如何解决这个问题的任何想法。


在配置 CloudFront 分配时,请记住默认情况下 CloudFront 会从请求中删除大多数标头。

这样做是为了优化缓存命中率,同时防止您的源服务器根据这些标头做出不适合基于这些标头的其他变体(或不存在)的不同请求的决定,然后 CloudFront 将从这些标头提供服务缓存,不恰当。

您需要将 Authorization 标头列入白名单以转发到源。

另请注意,在您控制的 CloudFront 分配后面配置 API Gateway 时,您可能希望将 API 端点部署为区域性而非边缘优化。