Amplify访问控制问题:配置CloudFront后无法登录
CloudFront搭配Amplify自定义域名登录循环问题解决指南
问题根源
这种反复要求输入凭据的情况,基本是CloudFront未正确转发Amplify认证依赖的Cookie、请求头,或是缓存配置打乱了会话状态——Amplify的认证会话靠特定Cookie和请求头维持,CloudFront如果拦截或未转发这些内容,每次请求都会被判定为未登录。
修复步骤
1. 配置CloudFront转发认证相关内容
打开CloudFront控制台,找到对应分发并编辑缓存行为:
- Cookie设置:选择「转发所有Cookie」(若想缩小范围,至少要包含
amplify-auth、amplify-idp-*、aws-amplify-appsync-token这类Amplify认证专用Cookie) - 请求头:添加并转发
Authorization、x-amz-user-agent、x-amz-security-token、x-amz-date、X-Amzn-Trace-Id这些头信息 - 查询字符串:设置为「转发所有查询字符串」——Amplify认证流程会用查询参数传递状态,丢失后会导致认证中断
2. 检查CloudFront域名与SSL配置
- 确认自定义域名的SSL证书是在us-east-1区域的AWS Certificate Manager(ACM)申请的(CloudFront强制要求证书部署在此区域)
- 检查CloudFront的默认根对象是否设为
index.html,避免因404错误打断认证流程 - 源设置中的源域名必须是Amplify的默认域名(例如
xxx.amplifyapp.com),源协议策略选择「HTTPS only」
3. 更新Amplify认证的域名白名单
登录Amplify控制台,进入应用的「认证」模块:
- 在OAuth配置中,将自定义域名添加到「授权重定向URI」和「注销重定向URI」列表,格式为
https://你的自定义域名.com/* - 确认身份池的CORS配置允许自定义域名发起请求
4. 清除浏览器缓存和Cookie
之前的错误会话缓存可能残留问题,清除对应域名的所有Cookie和缓存后,再重新测试登录
5. 调整CloudFront缓存策略
如果使用了自定义缓存策略,不要缓存登录页、后台首页这类需要认证的页面;可设置基于Cookie的缓存键,防止未认证的缓存内容被返回
验证方式
修改完成后,用浏览器F12打开开发者工具查看网络请求:
- 登录请求(如
/oauth2/token)返回200状态,响应头包含Set-Cookie设置Amplify相关Cookie - 后续页面请求的请求头中带有
Authorization头和对应的Amplify Cookie - 页面返回200状态,不会跳回登录页
内容的提问来源于stack exchange,提问作者ccw
相关产品推荐
相关产品推荐

