如何使用 httppost/rest-api 从 keycloak 获取用户列表

Posted

技术标签:

【中文标题】如何使用 httppost/rest-api 从 keycloak 获取用户列表【英文标题】:how to get the list of users from keycloak by using httppost/rest-api 【发布时间】:2018-07-01 20:11:39 【问题描述】:

我是 keycloak 的新手,任何帮助都会很明显。 我可以使用 keycloak api 获取用户详细信息列表,我想知道如何使用 http-post 获取它。

Keycloak kc = Keycloak.getInstance("url-path", "realm", "username", "password", "admin-cli");

通过使用这个 keycloak 对象,我可以获得用户列表。但是,当我想通过使用 http-post 或通过使用 keycloak 给出的端点 url 调用 rest api 调用来获取用户列表时,我无法根据令牌获取访问令牌,我只得到特定用户,我想要使​​用rest api的用户列表。

【问题讨论】:

通过使用该 keycloak 对象,我可以获得用户列表。 但我想知道我们如何使用 http-post 或 keycloak 的 rest api 获取用户和会话详细信息的列表。 【参考方案1】:

下面是通过key-cloak rest-api首先创建url来实现的步骤

String fetchAllUsers = URL+"/admin/realms/"+realmName+"/users?";

现在,如果您有数百万用户,您不想一次性获取所有用户,因此 keycloak 支持带分页的 rest-api,在您的休息后查询中,您可以询问 tenantName,queryString,Limit,PageNumber

fetchAllUsers(String tenantName, List<String> queryString, String limit, String pageNumber) 

现在这些东西将有助于创建一个查询,该查询将只发送不会影响 keycloak 和 web-api 性能的那么多记录。

queryString 中,用户可以通过过滤条件,例如,如果他想按姓名、姓氏、电子邮件 ID 搜索,或者用户希望按升序或降序搜索结果。您必须解析并创建一个查询字符串,这样它才会类似于 keycloak 的其余查询。之后,您可以将查询字符串与 fetchAllUsers 连接起来。

你的查询会是这样的

https://<IP ADDRESS>/<PORT>/admin/realms/<REALM NAME>/users?q=username=<USER NAME>ASC&email=<EMAIL ID>&limit=<RECORD LIMIT>&page=<PAGE NO>

如果您发现任何错误,请忽略错字。

【讨论】:

我认为这行不通,因为如果您查看 keycloak rest admin api 这是keycloak.org/docs-api/5.0/rest-api/index.html 然后在GET /realm/users 端点详细信息下只有firstmax 查询参数可用的。您验证此查询是否有效? 检查github.com/keycloak/keycloak-community/blob/master/design/… 嗨,@Subodh 你知道如何通过 id 列表获取许多用户吗? @cYee 我认为 ID 是安全的,但是你可以查看官方的 rest-api 文档。 我做到了,但似乎没有办法从 admin api 获取它,只是在 SO 中试试我的运气。【参考方案2】:

根据Offical Keycloak Admin REST API Docs(向下滚动一点到Get users Returns a list of users,filtered based on query parameters部分),你会发现有2个查询参数可用: firstmax

如果您将 first 设置为 10 并将 max 设置为 15,则将跳过前 10 个用户,您将收到接下来的 15 个即用户 11 到 25 响应。

使用以下请求:

GET https://$KEYCLOAK_HOST/auth/admin/$REALM/users?first=10&max=15

附: - 不要忘记授权标头。

【讨论】:

更新了 url auth/admin/realms//users

以上是关于如何使用 httppost/rest-api 从 keycloak 获取用户列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振提供程序从 Firestore 获取数据?

如何使用 oauth 从用户那里获取详细信息? [关闭]

如何从命令行(使用 kotlinc)使用 kapt?

如何使用 SWIG 从 C 调用 C# 方法?

如何从 python 使用 mongolab 插件到 Heroku?

如何从 python 使用 mongolab 插件到 Heroku?