You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak Admin REST API如何查询超100条资源或按名称检索指定资源

方案1:直接通过名称查询目标资源(推荐)

Keycloak的资源服务查询接口原生支持name查询参数,传入后会直接返回匹配对应名称的资源,无需拉取全量列表,也不会受分页限制。你可以直接用以下方式调用:

# 方式1:手动编码空格为%20
RESOURCE_ID=$(curl -k -s -H "Authorization: bearer $ACCESS_TOKEN" \
"$KEYCLOAK_URL/auth/admin/realms/$REALM/clients/$CLIENT_ID/authz/resource-server/resource?name=xy%20resource" \
| jq -r '.[0]._id')

如果资源名称包含特殊字符,建议用curl参数自动编码,避免编码错误:

# 方式2:自动处理URL编码(兼容性更好)
RESOURCE_ID=$(curl -k -s -H "Authorization: bearer $ACCESS_TOKEN" -G \
--data-urlencode "name=xy resource" \
"$KEYCLOAK_URL/auth/admin/realms/$REALM/clients/$CLIENT_ID/authz/resource-server/resource" \
| jq -r '.[0]._id')
方案2:调整分页参数拉取全量资源

如果你需要拉取所有资源做批量处理,可以通过Keycloak Admin REST API的通用分页参数绕过默认100条的限制:

  • first:分页起始偏移量,默认值为0
  • max:单页返回最大条数,默认值为100

如果资源总数可控,直接把max设为足够大的数值即可一次性拉取全量:

RESOURCE_ID=$(curl -k -s -H "Authorization: bearer $ACCESS_TOKEN" \
"$KEYCLOAK_URL/auth/admin/realms/$REALM/clients/$CLIENT_ID/authz/resource-server/resource?max=1000" \
| jq -r '.[] | select(.name=="xy resource")._id')

如果资源数量不确定,可通过循环翻页的方式拉取全部资源,直到返回的资源数组为空即可停止。

内容的提问来源于stack exchange,提问作者Donato Szilagyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:45:05