本文介绍了Keyshaak:如何以编程方式添加具有关联用户的新子组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Keyloak 8.0.1中,我们有一个具有组和子组的领域,如下所示:
group -
subgroup1
subgroup2
...
我们需要在group
中插入一批子组和用户。子组应该具有一些属性。
如何执行此操作?
我已尝试:
使用带有新添加的子组的导出的
realm-export.json
文件,并在导入时覆盖";。现在我不知道如何将新用户与子组联系起来。而且我也不确定这样会不会删除老用户。调用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:如何以编程方式添加具有关联用户的新子组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!