6

我是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 的用户列表。

4

2 回答 2

4

以下是通过 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 搜索或用户希望按升序或降序排列结果。您必须解析并创建一个查询字符串,以便它类似于其余查询钥匙斗篷。之后,您可以将查询字符串与 fetchAllUsers.

您的查询将是这样的

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

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

于 2018-04-19T07:27:27.127 回答
2

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

如果您设置first为 10 和max15,那么前 10 个用户将被跳过,您将收到接下来的 15 个,即用户 11 到 25的响应。

使用以下请求:

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

PS - 不要忘记授权标头。

于 2020-01-28T13:47:42.057 回答