Keycloak - использование API администратора для добавления роли клиента пользователю - PullRequest
0 голосов
/ 22 мая 2019

Я использую Keycloak AdminAPI (https://www.keycloak.org/docs-api/3.0/rest-api/index.html#_users_resource) для создания пользователя и назначения ролей клиента. Я получаю правильный токен, и пользователь создан, но назначение ролей возвращает 404

I 'Я использую 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 '- это идентификатор пользователя, возвращаемый при создании, и существует роль create-client

Мне нужен способ добавить роль клиента через запрос Http. Я видел, что есть некоторая реализация keycloack для Java, но я использую.NET CORE, поэтому будет целевая реализация, но сначала мне нужно иметь рабочий запрос, как вы уже догадались

1 Ответ

0 голосов
/ 22 мая 2019

Вы должны передать клиентский UUID методу role-mappings REST, а не ID, который вы указали при создании клиента в интерфейсе администратора. Используйте GET /admin/realms/{realm}/clients?clientId=realm-management метод REST для определения UUID клиента.

UPDATE

В Keycloak 6.0.1 для добавления роли необходимо передать имя и идентификатор роли.

Пример:

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

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