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

使用Postman调用Keycloak Admin REST API时遭遇404错误

问题排查与解决方案

一、先解决404错误:修正Admin API路径

你的Keycloak管理UI路径带/auth前缀(http://127.0.0.1:5001/auth),说明Admin API的基础路径也需要包含/auth,你当前的请求漏了这个前缀才导致404。

修正后的curl请求如下:

curl --location 'http://127.0.0.1:5001/auth/admin/realms/FeteBird/users' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 你的有效管理token'

二、Admin API的权限要求

你现在用的是业务客户端登录拿到的token,这类token只具备业务接口的访问权限,根本碰不了Admin API。必须用具备管理权限的token才能调用:

  • 方式1:用Keycloak自带的admin-cli客户端拿token
    执行以下命令,替换成你的管理员账号密码:

    curl --location 'http://127.0.0.1:5001/auth/realms/master/protocol/openid-connect/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'client_id=admin-cli' \
    --data-urlencode 'username=你的管理员用户名' \
    --data-urlencode 'password=你的管理员密码' \
    --data-urlencode 'grant_type=password'
    

    拿到返回的access_token后,再用它调用Admin API。

  • 方式2:自定义带管理权限的客户端

    1. 在Keycloak管理UI里新建客户端,类型选confidential,开启Service Accounts Enabled。
    2. 进入该客户端的Service Account Roles页面,给它添加realm-management下的对应权限(比如view-users、manage-users,按需选择)。
    3. 用客户端ID和密钥获取token:
      curl --location 'http://127.0.0.1:5001/auth/realms/FeteBird/protocol/openid-connect/token' \
      --header 'Content-Type: application/x-www-form-urlencoded' \
      --data-urlencode 'client_id=你的自定义客户端ID' \
      --data-urlencode 'client_secret=你的客户端密钥' \
      --data-urlencode 'grant_type=client_credentials'
      

三、业务客户端的Authorization Code Flow与Admin API互不冲突

你的Angular应用、Postman用的业务客户端,用Authorization Code Flow是正常的业务认证流程,和Admin API的权限设置完全不搭边:

  • 业务客户端的token只用来访问你的业务后端接口,不需要碰Admin API的权限。
  • Admin API的token是单独获取的,专门用来管理Keycloak的用户、角色等资源,两者是独立的认证上下文,不会互相影响。你不需要给业务客户端开额外授权,保持原来的Standard Flow配置就行。

内容的提问来源于stack exchange,提问作者San Jaisy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:12:14