Keycloak 常见问题排查

本节收录 Keycloak 生产环境高频问题与排查方案。每个子页是一个独立案例,含现象、根因、解决方案。建议先看本页的「快速索引」按症状定位。

快速索引

症状关键词解决方案
登录后报 HTTPS required / Invalid parameter: redirect_uriHTTPS、反向代理、proxyHTTPS / 反向代理问题
启动卡在 Liquibase / 数据库初始化失败Liquibase、MySQL Group Replication、锁Liquibase 与 MySQL 组复制
K8s 环境导入导出 Realm 迁移失败导入导出、Helm、OperatorK8s 导入导出迁移
登录后无限重定向 / 401 UnauthorizedERR_TOO_MANY_REDIRECTS、Cookie、SameSiteKeycloak 重定向循环与 401 排错指南

通用排查思路

  1. 看日志kc.sh start --log-level=DEBUG 或容器 kubectl logs,优先找 ERROR/WARN 与异常栈。
  2. 分层定位:浏览器(302/redirect_uri)→ 反代(X-Forwarded-* 头)→ Keycloak(Realm/Client 配置)→ 数据库(连接/锁/迁移)。
  3. 复现:用 curl -v 复现 OIDC 授权请求,观察 Location 头与参数。
  4. 核对版本:Keycloak 大版本间(WildFly → Quarkus)配置项与默认路径变化大,先确认版本。

常见根因分类

  • 反向代理头缺失X-Forwarded-Proto/Host 未透传,导致 Keycloak 生成 http:// 回调或域名错误。需 proxy-address-forwarding=true
  • 数据库迁移锁:Liquibase 在多节点同时启动或 MySQL Group Replication 下加锁失败。需串行启动或调整锁表配置。
  • Realm 导入格式/路径:Helm/Operator 导入期望 keycloakConfig 或 volume 挂载路径,与命令行 --import 行为不同。
  • Client redirect_uri 不匹配:精确匹配,避免通配;回调路径区分大小写与尾部斜杠。
  • 缓存不一致:集群 loginFailures/users 缓存栈配置不当,导致暴力检测或用户更新跨节点不生效。

更多案例见上方子页。新问题欢迎提交 Issue 补充。