Keycloak-使用管理API向用户添加客户端角色

时间:2019-05-22 10:22:04

标签: api http-status-code-404 admin keycloak

我正在尝试使用密钥斗篷AdminAPI(https://www.keycloak.org/docs-api/3.0/rest-api/index.html#_users_resource)创建用户并分配客户端角色。我收到正确的令牌,并且已创建用户,但分配角色返回404

我正在使用Postman与API连接:

/auth/realms/{realmName}/protocol/openid-connect/token
Content-Type application/x-www-form-urlencoded <-with parameters ofc
/auth/admin/realms/{realmName}/users

Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
   "username": "name",
   "enabled": true,
   "emailVerified": false,
   "firstName": "first",
   "lastName": "last",
   "credentials": [
       {
           "type": "password",
           "value": "newPas1*",
           "temporary": false
       }
   ]
}

上面为我工作,但下一个不为我

/auth/admin/realms/{realmName}/users/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/role-mappings/clients/realm-management

Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
   "roles": [
       {
           "id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
           "name": "create-client",
           "description": "${role_create-client}",
           "composite": false,
           "clientRole": true,
           "containerId": "344e7c81-e7a2-4a43-b013-57d7ed198eee"
       }
   ]
}

其中'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx'是创建期间返回的用户ID,并且存在create-client角色

我需要一种通过Http请求添加客户端角色的方法。我看到有一些针对Java的密钥克隆实现,但是我使用的是.NET CORE,所以会有目标实现,但是我需要先提出工作要求,因为您可能会猜到

1 个答案:

答案 0 :(得分:0)

您必须将客户端UUID传递给role-mappings REST方法,而不是在管理UI中创建客户端时指定的ID。使用GET /admin/realms/{realm}/clients?clientId=realm-management REST方法找出客户端UUID。

更新

在Keycloak 6.0.1中添加一个角色,该角色需要传递角色名称和ID。

示例:

POST /auth/admin/realms/{realm}/users/{user}/role-mappings/clients/{client}

[
  {
    "id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
    "name": "create-client"
  }
]