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

如何在Keycloak Admin Client创建用户时移除Configure OTP必填操作

问题原因

这是因为你的Keycloak Realm配置了默认必填操作,强制要求所有新用户完成Configure OTP。即使你在代码里指定了两个必填项,Realm的默认设置会自动追加这个操作到新用户身上。

解决方案

1. 修改Realm的默认必填操作设置(全局生效)

进入Keycloak管理控制台:

  • 切换到目标Realm,点击左侧菜单的Authentication -> Required Actions
  • 在默认的Required Actions列表里,找到Configure OTP,取消勾选它的Default Action选项
  • 保存设置后,新创建的用户就只会带上你代码里指定的两个必填操作了

2. 代码层面强制覆盖(单个用户生效)

如果不想修改全局Realm设置,只想让当前创建的用户不受默认OTP要求影响,可以用以下两种方式处理:

方式一:创建时明确覆盖(推荐)

部分Keycloak版本中,setRequiredActions会直接替换默认操作列表,若遇到默认项被追加的情况,可先清空再设置:

// 先清空默认的必填操作集合,再设置自定义项
userRepresentation.setRequiredActions(new ArrayList<>());
userRepresentation.setRequiredActions(
    List.of(
        UserModel.RequiredAction.VERIFY_EMAIL.name(),
        UserModel.RequiredAction.UPDATE_PASSWORD.name()
    ));

方式二:创建后移除多余操作

如果创建用户后仍存在额外的Configure OTP操作,可调用API手动移除:

String userId = CreatedResponseUtil.getCreatedId(response);
if (userId != null) {
    UserRepresentation createdUser = keycloak.realm(this.realm).users().get(userId).toRepresentation();
    List<String> requiredActions = new ArrayList<>(createdUser.getRequiredActions());
    // 移除Configure OTP对应的枚举值
    requiredActions.remove(UserModel.RequiredAction.CONFIGURE_TOTP.name());
    createdUser.setRequiredActions(requiredActions);
    // 更新用户信息
    keycloak.realm(this.realm).users().get(userId).update(createdUser);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:36:20