Добавить пользователя в роль клиента с помощью Keycloak Rest API

Я пытаюсь добавить роль клиентского уровня конкретному пользователю с помощью API Keycloak rest. Я пробую это в почтальоне, но продолжаю получать 404, не найденный.

Вот URL-

https: // {keycloak url} / auth / admin / realms / acme / users / b62dc517-0dd8-41ad-9d97-f385e507e279 / role- mappings / clients / 6b1f23b4-6bec-4873-a991-4b7e49e8b797

Параметр пользователя в URL-адресе - это идентификатор пользователя (b62dc517-0dd8-41ad-9d97-f385e507e279) в keycloak, а последняя часть URL-адреса - это идентификатор клиента (6b1f23b4-6bec-4873-a991-4b7e49e8b797) в keycloak

Тело ПОСТ-

{
"roles": [
            {

                "id": "5aee8f8c-421f-4ed4-93d1-2ddd44864f4f",
                "name": "admin",
                "composite": false,
                "clientRole": true,
                "containerId": "5f930328-98bc-40d0-9882-dd7f2482b6c2"
            }
]
}

Для почтальона я установил - Content-Type application/json носитель авторизации {TOKEN}

Где я ошибся?

РЕДАКТИРОВАТЬ: вот мои настройки почтальона -

Вот мои настройки в почтальоне- Заголовки-

Content-Length = <calculated when request is sent>
Host = <calculated when request is sent>
User-Agent = PostmanRuntime/7.26.10
Accept = */*
Accept Encoding = gzip, deflate, br
Connection = keep-alive
Content-Type = application/json

Authorization- Type = Bearer Token Token успешно сгенерирован перед каждой попыткой вручную

Радиокнопка Body- raw выбрана ниже в качестве необработанных данных.

 {
   "roles": [
        {

            "id": "5aee8f8c-421f-4ed4-93d1-2ddd44864f4f",
            "name": "admin",
            "composite": false,
            "clientRole": true,
            "containerId": "6b1f23b4-6bec-4873-a991-4b7e49e8b797"
        }
 ]
 }

Метод POST

РЕДАКТИРОВАТЬ - Ответ был в комментариях от Dreamcrash. Я скопировал идентификатор клиента из пользовательского интерфейса Keycloak, что вызвало ошибку 404. Я заметил, что когда я использовал почтальон для получения идентификатора клиента, он отличался от того, что было в пользовательском интерфейсе. Когда я использовал возвращаемое значение, все было хорошо, и это сработало! Имя и идентификатор клиента, области и т. Д. Для параметров URL или тела документации сообщения вводят в заблуждение. Неправильный идентификатор вызовет 404. Надеюсь, это поможет кому-то, поскольку я потратил часы на это ...


person Chris    schedule 10.03.2021    source источник


Ответы (1)


Проблема на теле попробуйте следующее:

[{"id":"5aee8f8c-421f-4ed4-93d1-2ddd44864f4f","name":"admin","composite":false,"clientRole":true,"containerId":"6b1f23b4-6bec-4873-a991-4b7e49e8b797"}]

id должен быть ролью ID, а containerId должен быть идентификатором клиента.

person dreamcrash    schedule 10.03.2021