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

And*_*dré 6 java clientresource keycloak

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

但是,我需要使用 Keycloak Java API 客户端来完成此角色分配。我知道如何连接客户端以及 Keycloak Java 客户端的一般功能。

具体来说,我想将客户端角色realm-management.view-usersrealm-managment.query-users添加到客户端“ platform-administration ”的服务帐户中。

Keycloak 网页面板的屏幕截图

And*_*dré 14

好吧,我自己想出来了。如果您不知道 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);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。救生员。如果我需要将一些开发人员的生活变成一场噩梦,我会做类似 keycloaks API 中的事情]:-&gt; (4认同)