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

Keycloak 24.0用kcadm.sh创建用户后登录报错:Account is not fully set up

问题:Keycloak 24使用kcadm.sh创建用户后登录失败报错"Account is not fully set up"

环境与脚本情况

通过Docker Compose运行quay.io/keycloak/keycloak:${KEYCLOAK_VERSION}镜像,使用初始化脚本每次重新初始化容器(非升级场景)。当KEYCLOAK_VERSION=23.0时脚本执行正常,切换到KEYCLOAK_VERSION=24.0后,在重新配置领域管理员的步骤报错。

原初始化脚本:

#!/bin/sh
set -xe

export KEYCLOAK_HOME=/opt/keycloak
PATH="$PATH:$KEYCLOAK_HOME/bin"
cd "$KEYCLOAK_HOME"/bin

REALM=testing
DEFAULT_PASSWORD=admin_password
HOST=keycloak
PORT=8080

./kcadm.sh config credentials \
  --server http://$HOST:$PORT \
  --realm master \
  --user admin \
  --password admin

./kcadm.sh create realms -s "realm=$REALM" -s "enabled=true"

ADMIN_UID=$(./kcadm.sh create users -r $REALM -s "username=admin" -i)
./kcadm.sh add-roles -r $REALM --uusername admin --cclientid realm-management --rolename realm-admin
./kcadm.sh update users/"$ADMIN_UID" -r $REALM -s "enabled=true"
./kcadm.sh update users/"$ADMIN_UID"/reset-password -r $REALM -s type=password -s value=$DEFAULT_PASSWORD -n

############################################
# Reconfigure to use the created realm admin
############################################

./kcadm.sh config credentials \
  --server http://$HOST:$PORT \
  --realm $REALM \
  --user admin \
  --password $DEFAULT_PASSWORD

# setup roles
# setup users
# setup clients

报错信息

...
keycloak-setup-1  | + ./kcadm.sh config credentials --server http://keycloak:8080 --realm testing --user admin --password admin_password
keycloak-setup-1  | Logging into http://keycloak:8080 as user admin of realm testing
keycloak-1        | 2024-05-24 11:48:34,509 WARN  [org.keycloak.events] (executor-thread-1) type="LOGIN_ERROR", realmId="29bee3da-666d-4db5-a16e-558db391412b", clientId="admin-cli", userId="null", ipAddress="10.89.0.173", error="resolve_required_actions", auth_method="openid-connect", grant_type="password", client_auth_method="client-secret", username="admin"
keycloak-setup-1  | Account is not fully set up [invalid_grant]
keycloak-setup-1 exited with code 1
service "keycloak-setup" didn't complete successfully: exit 1

已尝试的无效操作

  • 在更新用户的命令中添加-s 'emailVerified=true' -s 'requiredActions=[]'参数,无效果
  • 尝试添加-s 'profileVerified=true',发现该属性不被支持

解决方案

问题出在Keycloak 24中reset-password命令默认将密码设置为临时密码,导致用户登录时需要完成修改密码的必填操作,即使后台界面未显示。只需在重置密码的命令中显式指定temporary=false即可解决:

修改后的重置密码命令:

./kcadm.sh update users/"$ADMIN_UID"/reset-password -r $REALM -s type=password -s value=$DEFAULT_PASSWORD -s temporary=false -n

完整的用户创建与配置步骤调整后如下:

ADMIN_UID=$(./kcadm.sh create users -r $REALM -s "username=admin" -i)
./kcadm.sh add-roles -r $REALM --uusername admin --cclientid realm-management --rolename realm-admin
./kcadm.sh update users/"$ADMIN_UID" -r $REALM -s "enabled=true"
# 显式设置密码为非临时
./kcadm.sh update users/"$ADMIN_UID"/reset-password -r $REALM -s type=password -s value=$DEFAULT_PASSWORD -s temporary=false -n

这样设置后,用户密码为永久有效,使用kcadm.sh config credentials登录时就不会触发必填操作的校验,可正常完成登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:51:07