我在 AWS Amplify 上部署了一个 Web 应用程序,并使用 Amplify 的内置访问控制功能实现了密码保护。最初,一切都很顺利,我可以使用默认的 Amplify URL 登录并访问应用程序。
但是,当我使用自定义域名设置 CloudFront 来为应用程序提供服务时,出现了问题。现在,当我尝试使用自定义域登录并访问应用程序时,它会反复提示我输入用户名和密码。我确信我输入了正确的凭据。
该问题似乎特定于 CloudFront 的设置,因为身份验证使用默认的 Amplify URL 按预期工作。我正在寻求帮助来解决使用自定义域时的此访问控制问题。
我已经找到了解决这个问题的方法。您需要在 CloudFront 中附加源请求策略,以转发查看器请求中除“Host”标头之外的所有标头。已经有一个托管策略具有此设置,称为“AllViewerExceptHostHeader”。
为此,请按照以下步骤操作:
选择您要编辑的 CloudFront 分配条目。
导航到“行为”选项卡,然后选择要附加源请求策略的条目(在我的例子中,这是默认条目)。
单击“编辑”并转到“缓存密钥和源请求”部分。
在“源请求策略”下,从下拉列表中选择“AllViewerExceptHostHeader”。
完成后,单击“保存更改”。
如果您找不到该政策,您可以创建自己的政策。只是为了确保 Origin 请求设置中的“标头”,选择“除所有查看器标头”并选择“主机”以排除