如何使用java keycloak管理库处理keycloak中多个操作之间的事务

问题描述

我想在keycloak中实现交易功能。 我先创建一个用户,然后创建一个角色,并将角色与用户相关联。我希望所有这些操作都在一次交易中。 这是我的代码段:

Keycloak keyClk = getKeyCloakInstance();
    UserRepresentation userRepresentation = new UserRepresentation();
    userRepresentation.setEnabled(user.getStatus());
    userRepresentation.setUsername(user.getUserId() != null ? user.getUserId() : "");
    userRepresentation.setEmail(user.getEmail());

    RealmResource realmResource = keyClk.realm(KeyCloakUtil.realmName);
    UsersResource usersRessource = realmResource.users();
    Response response = usersRessource.create(userRepresentation);
    List<Role> roleList = user.getRoles();
    if (!roleList.isEmpty() || roleList != null) {
        createuserRoleList(user.getUserId(),roleList,KeyCloakUtil.clientId,KeyCloakConstant.ACTION_ADD);
    }

任何帮助将不胜感激。

解决方法

我不确定 keycloak 是否能够以事务方式处理该任务。我所做的是在 keycloak 中创建用户后,我会将创建的用户的引用保存在数据库中。如果您的工作流程出现问题,并且可能您最终在 keycloak 中拥有一些用户而不是在您的本地数据库中,则这种方法是有风险的。