我正在编写自定义 REST 端点。当我调用我的资源时,我尝试通过获取 UserResource 类的实例来更新 keycloak 中的一些用户。但是在更新 KeycloakTransactionManager 中的第一个用户事务之后,我收到异常 java.lang.IllegalStateException: 无法在没有事务的情况下访问委托。
我尝试通过以下方式开始交易:(例如)
KeycloakSession session = ... ; //got it from context
if(!session.getTransactionManager().isActive()){
session.getTransactionManager().begin();
}
Run Code Online (Sandbox Code Playgroud)
但得到“java.lang.IllegalStateException:事务处于非法回滚状态:已完成”,之后“java.lang.IllegalStateException:没有与当前线程关联的事务”。
// custom resource class
public class MyResource {
@Context
private HttpHeaders headers;
private MyAdminAuth auth;
private MyHelper helper;
private AppAuthManager authManager;
// I've correctly getting session and with open/active transaction
private KeycloakSession session;
public MyResource(KeycloakSession session) {
this.authManager = new AppAuthManager();
this.session = session;
}
@Path("sync-users-run")
@POST
@NoCache
@ResponseObject
public String syncUsersRun(String json) {
Gson gson = new Gson();
helper = new MyHelper(authManager, session, headers);
SyncMain sync = new SyncMain(params, helper);
String response = gson.toJson(sync.run());
return response;
}
}
private boolean updateUserInKeycloak(UserRepresentation existingUser, User newData) {
existingUser.setEmail(newData.getEmail());
existingUser.setEnabled(newData.isActive());
existingUser.setFirstName(newData.getName());
existingUser.setLastName(newData.getLastName());
try {
KeycloakSession session = helper.getSession();
UserModel user = session.users().getUserById(existingUser.getId(), helper.getRealmFromSession(session));
UserResource userResource = helper.getInstanceOfUserResource(user, MyAdminAuth.ROLE_ALLOW_SYNC_USERS);
//trying to update user but it works only for the first one
Response response = userResource.updateUser(existingUser);
if (response.getStatus() != NO_CONTENT_CODE) {
return false;
}
} catch (IllegalStateException | WebApplicationException e) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
如何在没有 keycloak 管理客户端的情况下正确更新用户?也许存在更简单和正确的方式?
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |