Keycloak Quarkus开发实例认证配置损坏,如何恢复登录?
解决Keycloak(Quarkus版)First Broker Login Flow配置错误导致的登录失败问题
问题场景
本地运行基于H2数据库的Quarkus版Keycloak开发实例,修改First Broker Login Flow并禁用Review Profile后,无法登录,控制台输出以下错误:
WARN [org.keycloak.authentication.DefaultAuthenticationFlow] (executor-thread-12) REQUIRED and ALTERNATIVE elements at same level! Those alternative executions will be ignored: [auth-cookie, null] 2022-09-25 10:50:38,131 WARN [org.keycloak.services] (executor-thread-12) KC-SERVICES0013: Failed authentication: org.keycloak.authentication.AuthenticationFlowException
修复方案
不需要删除实例重新搭建,可通过以下两种方式恢复配置:
方式1:直接修改H2数据库
- 停止Keycloak服务
- 连接本地H2数据库:
- 默认连接地址为
jdbc:h2:./data/keycloak(具体路径以你的Keycloak数据存储目录为准) - 用户名密码参考启动配置,默认通常为
sa/空密码
- 默认连接地址为
- 执行SQL调整认证流配置:
- 先获取
First Broker Login Flow的ID:SELECT ID FROM AUTHENTICATION_FLOW WHERE ALIAS = 'first broker login'; - 用上一步得到的
FLOW_ID,恢复Review Profile的启用状态并修正层级冲突:UPDATE AUTHENTICATION_EXECUTION SET REQUIRED = TRUE, ALTERNATIVE = FALSE WHERE FLOW_ID = '<上面获取的FLOW_ID>' AND ALIAS = 'review profile'; - 额外检查同层级执行节点,确保同一
FLOW_ID下不会同时存在REQUIRED=TRUE和ALTERNATIVE=TRUE的节点,如有冲突调整对应字段值
- 先获取
方式2:通过备份配置文件恢复
- 若之前导出过Realm的JSON配置文件,停止Keycloak后,将备份文件放到Quarkus版Keycloak的
data/import目录(或启动时指定的导入路径) - 重新启动Keycloak,让系统重新导入正确的Realm配置
内容的提问来源于stack exchange,提问作者Deniss M.
相关产品推荐
相关产品推荐

