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

如何为FastAPI-Keycloak的Admin Token添加resource_access字段

问题描述

我通过Docker运行KeyCloak:

docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:22.0.1 start-dev

随后创建了域dialog-test和客户端non-commercial-purchase-public。现在我需要获取Admin Token,执行了以下curl命令:

curl --location --request POST 'http://localhost:8080/realms/dialog-test/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=admin-cli' \
--data-urlencode 'client_secret=oCPory1e8KD8xjNlmDSOClKo0I9CNipu' \
--data-urlencode 'grant_type=client_credentials'

但返回的Token中不包含resource_access字段(我需要该字段是因为fastapi-keycloak库要求它),返回结果如下:

{
  "exp": 1692114608,
  "iat": 1692114308,
  "jti": "01aae75e-7145-4790-b076-390fde8eb93c",
  "iss": "http://localhost:8080/realms/dialog-test",
  "sub": "5b2933cb-3dd9-43b7-8890-a1e9d523a08b",
  "typ": "Bearer",
  "azp": "admin-cli",
  "acr": "1",
  // "resource_access": {"realm-management": "...", "account": "..."} <<- 未返回,仅能看到"admin-cli"
  "scope": "profile email",
  "email_verified": false,
  "clientHost": "172.17.0.1",
  "preferred_username": "service-account-admin-cli",
  "clientAddress": "172.17.0.1",
  "client_id": "admin-cli"
}

请问该如何添加这个字段?

解决方法

要让admin-cli客户端获取的Token包含resource_access字段,需为其服务账号分配对应角色,操作步骤如下:

  • 登录KeyCloak管理控制台:访问http://localhost:8080/admin,使用初始账号admin/admin登录。
  • 切换到目标域:在控制台顶部的域选择器中切换至dialog-test域。
  • 打开admin-cli客户端配置:进入客户端菜单,搜索并打开admin-cli的配置页面。
  • 启用服务账号:在设置标签页中,将服务账号启用选项设为开启,保存更改。
  • 分配角色:
    1. 切换到服务账号角色标签页。
    2. 在可用角色下拉框中选择realm-management,将所需角色(如admin、manage-clients等)添加到已分配角色列表。
    3. 若需访问其他客户端权限,可在下拉框中选择对应客户端,分配其角色。
  • 重新获取Token:再次执行之前的curl命令,此时返回的Token会包含resource_access字段,其中包含已分配的角色信息。

若需要resource_access中包含account客户端权限,同样需为admin-cli的服务账号分配account客户端的对应角色。

内容的提问来源于stack exchange,提问作者Альберт Александров

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:13:27