用户 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。
您好,我使用 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。