如何通过employeeNumber或自定义属性搜索keycloak用户?

Posted

技术标签:

【中文标题】如何通过employeeNumber或自定义属性搜索keycloak用户?【英文标题】:How to search keycloak users by employeeNumber or by custom attributes? 【发布时间】:2021-03-22 20:37:42 【问题描述】:

我想使用employeeNumber 搜索keycloak 用户。我尝试检查 keycloak 文档,但没有找到任何基于employeeNumber/自定义属性进行搜索的 API。我正在使用下面的 API 来搜索具有管理员权限的用户。

http://localhost:8080/auth/admin/realms/Demo-Realm/users/?firstName=akshay

也试过

http://localhost:8080/auth/admin/realms/Demo-Realm/users/?search=akshay

【问题讨论】:

【参考方案1】:

开箱即用,您可以从Keycloak Admin API 为端点执行:

GET /realm/users

人们可以阅读:

Get users 返回用户列表,根据查询过滤 参数

那些(可选)查询参数是:

briefRepresentation(布尔值); 电子邮件(字符串); 第一个(字符串); 名字(字符串); 姓氏(字符串); max(最大结果大小(默认为 100))(整数); 搜索(包含在用户名、名字或姓氏或电子邮件中的字符串); 用户名(字符串)。

如您所见,您无法搜索自定义属性。一个不太好的解决方案是获取所有用户 (max=-1),然后通过自定义属性进行过滤。

另一个选项是通过添加您自己的自定义服务提供者接口 (SPI) 并添加您的自定义端点来扩展 Keycloak 功能。在那里,您可以利用UserQueryProvider 接口中的searchForUserByUserAttribute 方法。

【讨论】:

以上是关于如何通过employeeNumber或自定义属性搜索keycloak用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅通过向量对的第一个元素或自定义向量三元组使用 std::find?

Unity NGUI UIPanel下对粒子或自定义Mesh的剪裁

WCF 返回 JSONP 或自定义结果格式

通过LOGBACK实现每个类包或自定义级别

如何在静态方法或自定义类中注入 HttpClient?

如何在字幕文件中加载外部或自定义字体