Keycloak - 将所有用户映射到角色

Ank*_*hal 6 keycloak keycloak-services

我知道keycloak暴露在api下面,

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-services</artifactId>
    <version>2.0.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这里有完整的文档.我在这里找不到所需的api来获取具有映射到它们的特定角色的所有用户.

问题陈述 - 我需要从具有特定角色的keycloak服务器中挑选所有用户.我需要向所有用户发送电子邮件,并将角色映射到他们.

sho*_*ser 8

有一个突出的功能请求通过API要求此功能.

在此期间,如果您的要求是一次性的,您可以通过询问加入KEYCLOAK_ROLE到USER_ROLE_MAPPING到USER_ENTITY的数据库来获取用户名(或电子邮件地址).

就像是:

SELECT username
FROM keycloak_role kr 
   JOIN user_role_mapping rm ON kr.id = rm.role_id
   JOIN user_entity ue ON rm.user_id = ue.id
WHERE kr.name = 'your_role_name';
Run Code Online (Sandbox Code Playgroud)


Dav*_*dky 8

根据文档,它似乎是这个 API:

GET /{realm}/clients/{id}/roles/{role-name}/users
Run Code Online (Sandbox Code Playgroud)

它在那里有一段时间了。然而,在这个旧版本中,不可能以这种方式获得超过 100 个用户。稍后修复并添加了分页功能。


Nir*_*han 6

现在通过更新的休息端点应该可以实现这一点。

Set<UserRepresentation> usersOfRole = realmResource.roles().get(roleName).getRoleUserMembers();
Run Code Online (Sandbox Code Playgroud)