java - Keycloak:使用 Java API 客户端将客户端角色添加到服务帐户角色

标签 java keycloak clientresource

我想为现有 Keycloak 客户端的服务帐户添加客户端角色(在此客户端上启用了服务用户)。 我已经设法通过网络面板做到了这一点(见截图)。

但是,我需要使用 Keycloak Java API 客户端进行此角色分配。我知道如何连接客户端和 Keycloak Java 客户端的一般功能。

具体来说,我想将客户端角色realm-management.view-usersrealm-managment.query-users添加到客户端“< em>平台管理”。

Screenshot from Keycloak web panel

最佳答案

好吧,我自己想通了。如果您不知道 API 功能如何,真正有帮助的是打开浏览器的开发者控制台,打开 Keycloak Web 面板,执行操作,然后查看网络选项卡中的 API 调用。

RealmResource realm = keycloak.realm("realmName");

String realmManagementId = realm.clients().findByClientId("realm-management").get(0).getId();

String platformAdministrationId = realm.clients().findByClientId("platform-administration").get(0).getId();

String serviceUserId = realm.clients().get(platformAdministrationId).getServiceAccountUser().getId();

List<RoleRepresentation> availableRoles = realm.users().get(serviceUserId).roles().clientLevel(realmManagementId).listAvailable();

List<RoleRepresentation> rolesToAssign = availableRoles.stream().filter(r -> "view-users".equalsIgnoreCase(r.getName()) || "query-users".equalsIgnoreCase(r.getName())).collect(    Collectors.toList());
realm.users().get(serviceUserId).roles().clientLevel(realmManagementId).add(rolesToAssign);

关于java - Keycloak:使用 Java API 客户端将客户端角色添加到服务帐户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69103060/

相关文章:

java - 即发即忘与 http 请求相比

java - Spring 集成 - SpelEvaluationException : The operator 'ADD' is not supported between objects of type 'java.lang.String' and 'null'

java - 带 Keycloak 的 Quarkus GraphQL 客户端

css - GWT 如何在图像资源上添加 css 样式

java - 如何在ReSTLet Framework中设置ClientResource发送请求的超时时间

java - OpenAPI validator 规则使用 max 而不是 size

java - 无法解析辅助功能服务类中的 getIntent() 方法

authentication - 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?

node.js - 使用 Keycloak Rest API 将用户添加到客户端角色

java - 如何使用 URL 参数使用 servlet ClientResource?