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

Keycloak 15开启TOTP后admin-cli登录失败如何解决?

Keycloak 15版本开启TOTP后admin-cli登录解决方案

问题原因

Keycloak 15.0.x版本的kcadm.sh工具原生未在config credentials子命令中支持TOTP参数传入,你尝试添加的--totp、--otp等参数均不被该版本识别,因此会返回用户名密码校验失败的报错。该功能直到Keycloak 20及以上版本才被官方加入。

可行解决方案

方案1:手动获取token后配置到kcadm(适合临时使用)

  1. 用curl调用密码授权流接口,传入TOTP参数获取访问凭证:
curl -X POST http://localhost:8080/auth/realms/master/protocol/openid-connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=admin" \
  -d "password=<替换为你的管理员密码>" \
  -d "grant_type=password" \
  -d "client_id=admin-cli" \
  -d "totp=<替换为你当前的6位TOTP动态验证码>"

请求成功后会返回包含access_token、refresh_token的响应内容。
2. 将拿到的access_token配置到kcadm即可正常使用:

sh ./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --token <替换为上一步获取的access_token>

方案2:启用admin-cli服务账号(适合自动化脚本使用)

无需每次传入密码和TOTP,长期有效:

  1. 登录Keycloak Web管理后台,进入master realm的「客户端」页面,找到admin-cli客户端
  2. 开启「服务账号启用」选项并保存配置
  3. 切换到「服务账号角色」标签页,为该服务账号分配master realm的realm-admin管理员权限
  4. 后续直接用客户端凭证流登录即可:
sh ./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --client admin-cli --client-secret <替换为admin-cli客户端的密钥>

内容的提问来源于stack exchange,提问作者Cedric Guindon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:54:06