本文介绍了Keyshaak:如何以编程方式添加具有关联用户的新子组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

group -
    subgroup1
    subgroup2
    ...

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

如何执行此操作?

我已尝试:

  1. 使用带有新添加的子组的导出的realm-export.json文件,并在导入时覆盖";。现在我不知道如何将新用户与子组联系起来。而且我也不确定这样会不会删除老用户。

  2. 调用Keyshaak REST接口。似乎不可能更新组和添加子组。Documentation表示:

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

是否可以通过编程方式添加具有与该子组相关联的用户的新子组?我是否遗漏了REST API调用或导入功能的某些内容?例如,有没有其他方法可以通过Java 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;
            }
        }

这篇关于Keyshaak:如何以编程方式添加具有关联用户的新子组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 11:34