嗨,我使用Keycapt API来获取启用状态的用户GET /auth/admin/realms/Test/users?enabled=true
接收不在Keycloft 中的用户卡上的用户
例如:[ {"username": "service-account-test" ...}, {"username": "service-account-test2" ...} ]
如何摆脱它?
前缀为service-account-
的用户由Keycapture为每个启用了OAuth2流client credentials
的客户端自动创建,该客户端在Keycapture中用选项Service Accounts Enabled
表示。
因此,您可以使用端点查询客户端列表
GET /{realm}/clients
筛选以仅获取字段"serviceAccountsEnabled"
设置为true
的客户端。
然后,您可以使用该列表来筛选您不想要的用户,因为您知道这些用户的名称为service-account-clientID
,其中clientID是启用了服务帐户的客户端的clientID。
只需使用黑名单来减少返回的用户列表。端点不支持任何否定的查找逻辑(请参阅端点规范(。
示例:
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);
运行时对此的影响充其量应该可以忽略不计。