在新的 keycloak 用户帐户上设置所需的操作

Setting required action on new keycloak user account

我正在使用客户端创建一个新的 keycloak 用户。像这样:

keycloak.realm(realm)
        .users()
        .create(user);

用户变量是一个 UserRepresentation 对象,我正在尝试添加一个 Update Password 必需的操作:

user.setRequiredActions(singletonList("Update Password"))

用户创建成功,问题是我没有设置所需的操作

不确定我做错了什么,我应该在所需的操作列表中指定不同的值吗?

谢谢

弄清楚发生了什么。

Keycloak 有一个枚举来表示各种用户操作:

public static enum RequiredAction {
    VERIFY_EMAIL, UPDATE_PROFILE, CONFIGURE_TOTP, UPDATE_PASSWORD, TERMS_AND_CONDITIONS
}

所以值应该是 "UPDATE_PASSWORD" 而不是 "Update password"

现在在 Keycloak 8.x 中您可以使用

UserResource.toRepresentation().setRequiredActions(...);

更改登录名后手动触发类似 "verify email" 的操作。

要找出所有可能的必需操作别名,请从管理界面将目标领域导出为 json。在 json 中,您会找到 "requiredActions" 数组,其中列出了所有法律行为,如下所示:

 "requiredActions": [
    {
      "alias": "CONFIGURE_TOTP",
      "name": "Configure OTP",
      "providerId": "CONFIGURE_TOTP",
      "enabled": true,
      "defaultAction": false,
      "priority": 10,
      "config": {}
    },
    {
      "alias": "terms_and_conditions",
      "name": "Terms and Conditions",
      "providerId": "terms_and_conditions",
      "enabled": false,
      "defaultAction": false,
      "priority": 20,
      "config": {}
    },

在代码中设置所需操作列表时,只需使用 "alias" 标签下的字符串即可。