gpt4 book ai didi

java - Keycloak:如何以编程方式添加具有关联用户的新子组?

转载 作者:行者123 更新时间:2023-12-02 01:07:02 24 4
gpt4 key购买 nike

在 Keycloak 8.0.1 中,我们有一个包含组和子组的领域,如下所示:

group -
subgroup1
subgroup2
...

我们需要将一批子组和用户插入到中。子组应该具有一些属性。

我该怎么做?

我尝试过:

  1. 使用导出的 realm-export.json 文件以及新添加的子组并在导入时“覆盖”。现在我不知道如何将新用户与子组连接起来。而且我也不确定这样老用户是否不会被删除。

  2. 调用 Keycloak REST API。更新组和添加子组似乎不可能。 Documentation说:

    PUT /{realm}/groups/{id}
    Update group, ignores subgroups.

现在我正在考虑使用 UI 测试工具以编程方式添加用户,但这似乎不必要地复杂。

是否可以通过编程方式添加新子组以及与该子组关联的用户?我是否缺少 REST API 调用或导入功能的某些内容?是否还有另一种方式,例如 Java Admin Client

最佳答案

您可以在其下创建组和子组,以下是使用 Admin Client 创建子组的示例代码。您还可以将用户关联到这些组

 public void addSubgroups()  {
RealmResource realm =keycloak.realm("myrealm");
GroupRepresentation topGroup = new GroupRepresentation();
topGroup.setName("group");
topGroup = createGroup(realm, topGroup);

createSubGroup(realm,topGroup.getId(),"subgroup1");
createSubGroup(realm,topGroup.getId(),"subgroup2");
}

private void createSubGroup(RealmResource realm, String parentGroupId, String subGroupName) {
GroupRepresentation subgroup = new GroupRepresentation();
subgroup.setName(subGroupName);
try (Response response = realm.groups().group(parentGroupId).subGroup(subgroup)){
if (response.getStatusInfo().getFamily() == Family.SUCCESSFUL) {
System.out.println("Created Subgroup : " + subGroupName );
} else {
logger.severe("Error Creating Subgroup : " + subGroupName + ", Error Message : " + getErrorMessage(response));
}
}
}

private GroupRepresentation createGroup(RealmResource realm, GroupRepresentation group) {
try (Response response = realm.groups().add(group)) {
String groupId = getCreatedId(response);
group.setId(groupId);
return group;
}
}

关于java - Keycloak:如何以编程方式添加具有关联用户的新子组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com