Keycloak API:如何修改复合角色关联的客户端角色
Keycloak 11.0 API 实现角色关联客户端角色
前置准备
获取管理员访问令牌,使用
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})。获取目标客户端的内部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
相关产品推荐
相关产品推荐

