You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak无法登录:误删管理员账号的TOTP凭证求助

解决Keycloak Master Realm管理员误删TOTP后无法登录的问题

以下是几种可行的解决方法,按操作规范程度排序:

方法1:使用Keycloak CLI(kcadm)修复

这是生产环境最推荐的方式,无需直接修改数据库:

  • 切换到Keycloak安装目录的bin文件夹
  • 先获取管理员用户的ID:
    ./kcadm.sh get users -r master --username admin
    
    从返回的JSON结果中复制id字段值
  • 删除该用户的OTP凭证:
    ./kcadm.sh delete users/{替换为刚才的用户ID}/credentials -r master --type otp
    
  • 若登录流强制要求OTP,还需调整认证流程:
    1. 查看浏览器登录流的执行步骤:
      ./kcadm.sh get authentication/flows/browser/executions -r master
      
    2. 找到类型为OTP Form的执行项,复制其id,然后修改验证要求为可选:
      ./kcadm.sh update authentication/flows/browser/executions/{替换为OTP执行ID} -r master -s requirement=ALTERNATIVE
      
  • 完成后重启Keycloak,即可用密码正常登录

方法2:直接操作数据库

如果无法使用CLI,可通过数据库清理残留的OTP验证记录:

  • 停止Keycloak服务
  • 连接Keycloak对应的数据库(如MySQL、PostgreSQL等)
  • 执行SQL语句删除管理员的OTP凭证:
    DELETE FROM user_credential 
    WHERE user_id = (SELECT id FROM user_entity WHERE username = 'admin' AND realm_id = 'master') 
      AND type = 'otp';
    
  • 启动Keycloak,尝试用密码登录

方法3:临时禁用OTP(开发环境应急)

仅适用于本地开发环境,快速恢复登录权限:

  • 启动Keycloak时添加参数禁用OTP验证:
    ./kc.sh start-dev --spi-authentication-authenticator-otp-enabled=false
    
  • 登录后重新配置TOTP或调整认证流,之后恢复正常启动参数

注意事项

  • 操作数据库前务必停服,避免数据不一致
  • 生产环境优先使用CLI方法,降低直接操作数据库的风险

内容的提问来源于stack exchange,提问作者Naveen Subramanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:00:13