клиентские роли не были назначены при создании нового пользователя в Keycloak

Я попытался создать нового пользователя с ролью клиентов. У меня есть клиентские роли: - Администратор - Оператор - Менеджер

И при создании пользователя я хочу назначить пользователю роль клиента

мой локон:

curl -X POST -H 'Authorization: Bearer token' -H 'Content-Type: application/json' -i 'http://localhost.com/auth/admin/realms/realm/users' --data '{
  "username": "[email protected]",
  "enabled": true,
  "firstName": "",
  "lastName": "",
  "email": "[email protected]",
  "credentials": [
    {
      "type": "password",
      "value": "qq",
      "temporary": false
    }
  ],
  "clientRoles": {
    "suppression": [
      "Admin"
    ]
  }
}'

Пользователь успешно создан, но роль не назначена. Также хочу сделать это в одном запросе


person Slavik Muz    schedule 13.04.2018    source источник
comment
Вы нашли ответ, как это сделать за один шаг?   -  person pvpkiran    schedule 29.01.2020
comment
Вы нашли причину?   -  person CyberEternal    schedule 28.07.2021


Ответы (2)


Это неправильный способ назначать роли пользователю. Это пошаговый процесс - Шаг 1 - Создайте пользователя в keycloak.

curl -X POST -H 'Authorization: Bearer token' -H 'Content-Type: application/json' -i 'http://localhost.com/auth/admin/realms/realm/users' --data '{.....

Шаг 2. Затем используйте другой API, чтобы сопоставить этого пользователя с определенной ролью клиента.

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

Чтобы получить полную спецификацию этого API, вы можете выполнить поиск этого API в документации Keycloak ADMIN API. Вот ссылка https://www.keycloak.org/docs-api/3.0/rest-api/index.html и выполните поиск по запросу «Добавить роли уровня клиента в сопоставление ролей пользователя».

person raghav    schedule 04.05.2019
comment
почему такая простая вещь должна быть в двух процессах - person aswzen; 17.07.2020
comment
@aswzen его keycloak, неявная сложность днк, чего удивляться? - person mentorgashi; 29.04.2021

Прочитав этот ответ: https://stackoverflow.com/a/60814057/577131

  • Создать новую группу (моя - admin-group)
  • Добавьте сопоставление ролей для роли, которую вы хотите, чтобы каждый пользователь в этой группе получил эту роль.

При использовании POST для создания нового пользователя я добавил это пользователю

"groups" : [
    "admin-group"
]

Пользователь добавлен в эту группу и получает роль, сопоставленную с этой группой.

person shmoltz    schedule 03.06.2021