Keycloak 12丢失管理员密码如何重置且不丢失已有Realm配置?
Keycloak 12 本地管理员密码重置方案(不丢失已有Realm数据)
你之前使用add-user命令添加后无法登录,是因为该命令是Keycloak底层依赖的WildFly应用服务器的原生管理员添加指令,生成的账号仅可访问WildFly管理控制台(默认端口9990),无法登录Keycloak身份管理控制台。
方案1:通过Keycloak专属CLI添加master realm管理员(操作最简单)
- 停止当前运行的Keycloak服务
- 进入Keycloak根目录下的
bin文件夹 - 根据操作系统执行对应命令:
- Linux/Mac系统:
./add-user-keycloak.sh -r master -u <新管理员用户名> -p <新管理员密码> - Windows系统:
add-user-keycloak.bat -r master -u <新管理员用户名> -p <新管理员密码>
- Linux/Mac系统:
- 命令执行成功后重新启动Keycloak服务,使用新账号密码访问Keycloak管理控制台即可正常登录
方案2:操作数据库重置原有管理员密码(需记得原有管理员用户名)
该方案适合需要保留原管理员账号的场景,不会修改任何业务Realm的数据:
- 停止Keycloak服务,避免数据库读写冲突
- 登录Keycloak使用的后端数据库,执行以下操作:
- 查询master realm中原有管理员的用户ID:
SELECT id, username FROM user_entity WHERE realm_id = 'master' AND username = '<原有管理员用户名>';- 生成符合Keycloak默认规则的BCrypt密码哈希(迭代次数为11)
- 更新该用户的登录凭证:
UPDATE credential SET secret_data = '{"value":"<生成的BCrypt哈希值>","salt":"","additionalParameters":{}}', credential_data = '{"hashIterations":11,"algorithm":"bcrypt"}' WHERE user_id = '<上一步查询到的用户ID>' AND type = 'password'; - 操作完成后启动Keycloak服务,使用原有用户名和新密码登录即可
内容的提问来源于stack exchange,提问作者pavants
相关产品推荐
相关产品推荐

