Cloudfront 无法在部署在 EBS 上的 Spring 启动时到达安全端点

Cloudfront can't reach secured endpoints on Spring boot deployed on EBS

我在 Elastic beantalk 上部署了一个 Spring 引导应用程序,在 S3 上部署了一个 React 应用程序作为静态网站。我使用 Cloudfront 来处理这两个应用程序之间的路由,一切正常。我可以使用 Postman 获取在 Spring 启动(连接到 Postgres RDS)时拥有的所有数据,并且我可以将登录调用发送到安全端点(具有 Spring 安全性)。在添加所需的 headers.

之后,我还可以使用邮递员调用所有安全端点

我的问题是,当我尝试通过 CloudFront 调用 EBS Spring 启动时的安全端点时,我得到了 403。所有其他端点都运行良好(没有 spring 安全性在他们中)。只有受保护的端点才会返回 403。

我正在使用一个名为 Authentication with Bearer 的 header(我在调用登录时生成的)将请求发送到后端。

有人知道我在这里遗漏了什么吗?谢谢!

好的,我找到了答案。 (我为这个问题忙了大约两天,我把问题放到 Whosebug 上 20 分钟后找到了答案):)

答案是:添加白名单Header。这是身份验证 header。因为Cloudfront在发送请求时删除了这个header,所以我不得不将它列入白名单)。

如何添加白名单header:

转到你的分发 -> 行为 -> 选择 EBS 行为 -> 编辑 -> 创建一个新的缓存策略 -> 选择 Headers -> 然后选择 whitlist

我希望我可以帮助别人解决这个问题,避免像我一样花两天时间寻找答案:)