问题描述
我想在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 中拥有一些用户而不是在您的本地数据库中,则这种方法是有风险的。