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

Rad*_*adu 3 keycloak

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

keycloak.realm(realm)
        .users()
        .create(user);
Run Code Online (Sandbox Code Playgroud)

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

user.setRequiredActions(singletonList("Update Password"))
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

谢谢

Rad*_*adu 8

想出了什么.

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

public static enum RequiredAction {
    VERIFY_EMAIL, UPDATE_PROFILE, CONFIGURE_TOTP, UPDATE_PASSWORD, TERMS_AND_CONDITIONS
}
Run Code Online (Sandbox Code Playgroud)

所以价值应该是"UPDATE_PASSWORD""Update password"

  • 事实上,这是非常不完整的。该枚举是名为 UserModel 的类的一部分,并且属于一个名为 keycloak-server-spi 的非常精确的库。 (5认同)

小智 6

要找出所有可能需要的操作别名,请从管理界面将目标领域导出为 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": {}
    },
Run Code Online (Sandbox Code Playgroud)

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