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

Keycloak API:如何修改复合角色关联的客户端角色

Keycloak 11.0 API 实现角色关联客户端角色

前置准备

  1. 获取管理员访问令牌,使用admin-cli客户端调用令牌接口:

    curl -X POST "http://{keycloak-host}:{port}/auth/realms/{realm-name}/protocol/openid-connect/token" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "grant_type=password" \
      -d "client_id=admin-cli" \
      -d "username={admin-username}" \
      -d "password={admin-password}"
    

    从返回结果中提取access_token,后续所有请求都需要将其作为Authorization头的值(格式:Bearer {access-token})。

  2. 获取目标客户端的内部ID(以realm-management客户端为例):

    curl -X GET "http://{keycloak-host}:{port}/auth/admin/realms/{realm-name}/clients?clientId=realm-management" \
      -H "Authorization: Bearer {access-token}"
    

    返回结果中的id字段即为该客户端的内部ID,记录下来备用。

添加客户端角色到admin-sso角色的关联列表

调用复合角色添加接口,将realm-management客户端下的manage-identity-provider角色关联到admin-sso领域角色:

curl -X POST "http://{keycloak-host}:{port}/auth/admin/realms/{realm-name}/roles/admin-sso/composite/clients/{realm-management-client-id}/roles" \
  -H "Authorization: Bearer {access-token}" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "name": "manage-identity-provider"
    }
  ]'

验证结果

调用以下接口查询admin-sso角色的关联客户端角色,确认是否添加成功:

curl -X GET "http://{keycloak-host}:{port}/auth/admin/realms/{realm-name}/roles/admin-sso/composite/clients/{realm-management-client-id}/roles" \
  -H "Authorization: Bearer {access-token}"

补充说明

  • 若admin-sso是某个客户端下的角色(而非领域角色),接口路径需调整为:
    POST /auth/admin/realms/{realm-name}/clients/{admin-sso-client-id}/roles/admin-sso/composite/clients/{realm-management-client-id}/roles
    其中admin-sso-client-id是admin-sso角色所属客户端的内部ID。
  • Keycloak 11.0的API前缀为/auth,调用时请勿遗漏。

内容的提问来源于stack exchange,提问作者Softwareentwicklung Freelancer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:12:48