AWS Cognito登录成功后无法获取用户会话问题求助
问题排查:AWS Cognito HTTPS域名登录后无法获取会话
针对你遇到的HTTPS域名下登录成功但停留在登录页、未触发cognito-identity请求的问题,按以下方向排查解决:
1. Cookie安全属性与域配置问题
HTTP(IP访问)和HTTPS属于不同安全上下文,Cognito的Cookie在HTTPS环境下有严格的属性要求:
- 检查Cognito用户池应用客户端设置:确保
Allowed Callback URLs、Allowed Logout URLs全为HTTPS格式(如https://my_domain/login/callback),不能混合HTTP地址。 - 配置Cognito自定义域名的Cookie规则:进入用户池
App integration->Domain->Cookie configuration,开启Secure cookies(HTTPS强制要求),SameSite设为Lax;若应用域名与Cognito自定义域名是主/子域关系(如my_domain和auth.my_domain),需设置Cookie domain为根域(如.my_domain),保证跨子域能读取Cookie。 - 若应用是SPA(单页应用),确保Cognito客户端未开启
HttpOnly cookies(否则JS SDK无法读取Cookie生成会话)。
2. Nginx HTTPS配置补全
你的Nginx配置缺少关键安全头和SPA路由重写规则,可能导致请求拦截或路由异常:
更新HTTPS server块配置:
server { listen 443 ssl; server_name my_domain; ssl_certificate /etc/ssl/private/XXX.crt; ssl_certificate_key /etc/ssl/private/XXX.key; # 添加安全头,允许Cognito相关域名请求 add_header X-Frame-Options "SAMEORIGIN"; add_header Content-Security-Policy "default-src 'self' https://cognito-idp.ap-southeast-1.amazonaws.com https://cognito-identity.ap-southeast-1.amazonaws.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"; add_header Referrer-Policy "strict-origin-when-cross-origin"; # SPA路由重写,避免刷新404同时保证回调路由正常 location / { try_files $uri $uri/ /index.html; } root /var/www/XXXX/html; error_log /var/log/nginx/error.XXXX.log warn; access_log /var/log/nginx/access.XXXX.log combined; }
3. 应用代码与Identity Pool配置检查
- 确认应用中Cognito初始化代码的区域为
ap-southeast-1,且redirectUri设置为HTTPS格式的回调地址,与用户池配置完全一致。 - 检查Cognito Identity Pool的区域是否为
ap-southeast-1,信任关系是否正确关联你的用户池(信任策略中需包含用户池的ARN)。
4. 验证步骤
- 清除浏览器缓存与Cookie,重新发起HTTPS登录请求。
- 打开Chrome控制台
Application->Cookies,检查是否存在Cognito相关Cookie(如CognitoIdentityServiceProvider.<clientId>.LastAuthUser),若HTTPS下无Cookie,说明Cookie配置未生效。 - 查看
Network面板,确认是否有cognito-identity请求被CSP拦截或返回错误码。
内容的提问来源于stack exchange,提问作者vanessa
相关产品推荐
相关产品推荐

