本站在允许 JavaScript 运行的环境下浏览效果更佳

CDN 回源跟随配置导致登录异常问题排查

32 1.0~1.3 分钟 454

问题现象

最近遇到了一个诡异的登录问题:JumpServer 服务和 Halo CMS 服务在输入正确的账号密码后都无法正常登录。

博主 Handsome 补充:所有的 SSO(单点登录)都会遇到同样的问题。(例如:使用 QQ 认证登录,GitHub 认证登录)

起初启用了双因素认证(2FA),系统总是提示 2FA 验证码错误。我一度怀疑是基于 TOTP 的双因素认证配置出了问题。

更奇怪的是,当我关闭 2FA 后,虽然能够成功通过身份验证,但页面并不会跳转到后台管理界面,而是一直停留在登录页面。

排查过程

面对这个问题,我开始系统性地排查:

  1. ​验证账号密码​:确认无误
  2. ​检查 2FA 配置​:排除 TOTP 时间同步问题
  3. 局域网内登录测试:服务运行正常
  4. 分析后台日志​:登录请求实际上是成功的
  5. 检查本地 WAF:CDN 回源跳过 WAF 仍复现问题

逐步排查后,问题指向了 CDN 配置。

根本原因

最终定位到问题的罪魁祸首:​CDN 的“回源跟随”配置项​。

当启用回源跟随时,CDN 会自动跟随源站返回的 3xx 重定向响应。这在某些场景下是有用的,但在处理登录重定向时却会导致问题:

  1. 登录成功后,服务器返回 302 重定向到管理后台
  2. CDN 拦截了这个重定向,导致浏览器无法正确跳转
  3. 导致 Session/Cookie 上下文错乱,提示登陆失败

解决方案

关闭 CDN 的“回源跟随”配置项,问题立即解决。

(“回源跟随”在不同 CDN 系统的别名:“回源301/302跟随”、“回源跟随重定向”)


0
上一篇 中文博客圈列表
下一篇 SCDN 免费赞助计划:助力高质量博客&博客圈