用户 api 中的 Keycloak return 服务

Keycloak return service in user api

您好,我使用 Keycloak API 来获取启用状态的用户 GET /auth/admin/realms/Test/users?enabled=true

接收Keycloak中不在用户卡上的用户

例如:[ {"username": "service-account-test" ...}, {"username": "service-account-test2" ...} ]

如何摆脱它?

只需使用黑名单来减少返回的用户列表。终结点不支持任何取反查找逻辑 (see the endpoint specification)。

示例:

Map<String,String> users = /* from rest API - map only as example /*
String[] blacklist = {"service-account-test", "service-account-test2"};
for(String blacklistEntry : blacklist) users.remove(blacklistEntry);

对此的运行时影响最多可以忽略不计。

Keycloak 为每个启用了 OAuth2 流程 client credentials 的客户端自动创建前缀为 service-account- 的用户,这在 Keycloak 中用选项 Service Accounts Enabled 表示。

因此,您可以使用 endpoint:

查询客户列表
GET /{realm}/clients

过滤以仅获取字段 "serviceAccountsEnabled" 设置为 true 的客户端。

然后您可以使用该列表来过滤您不需要的用户,知道这些用户将具有名称 service-account-clientID,其中 clientID 是启用了服务帐户的客户端的 clientID。