Keycloak игнорирует realmRoles при добавлении пользователя через rest api

Когда я создаю нового пользователя с помощью Keycloak rest API, приложение игнорирует свойство realmRoles, не присваивая роль новому пользователю. Вот пример

POST: https://localhost:8543/auth/admin/realms/quarkus/users

Body:
{
   "username":"alexandre",
   "enabled":true,
   "emailVerified":true,
   "firstName":"Alexandre",
   "lastName":"Oliveira",
   "email":"alexandreqogmailcom",
   "credentials":[
      {
         "type":"password",
         "value":"123456",
         "temporary":false
      }
   ],
   "realmRoles":[
      "user_esc"
   ],
   "access":{
      "mapRoles":true
   }

Есть ли способ решить эту проблему или как обойтись?

PS: Я использую keycloak версии 12.0.1.


person Alexandre Queiroz de Oliveira    schedule 22.12.2020    source источник


Ответы (1)


Если вы ожидаете этого с конечной точкой:

POST: https://localhost:8543/auth/admin/realms/quarkus/users

он также создаст роли Realm, чего не произойдет, он не создаст роли Realm. Для создания ролей Realm вы либо используете консоль администратора, либо конечную точку:

POST https://localhost:8543/auth/admin/realms/quarkus/roles

с полезной нагрузкой

{"name":"<ROLE_NAME>","description":"<DESCRIPTION>"}

если это роль несоставной области.

Чтобы назначить пользователю роль Realm, после создания пользователя вызовите конечную точку:

POST: https://localhost:8543/auth/admin/realms/quarkus/users/<USER_ID>/role-mappings/realm

с полезной нагрузкой

[{"id":"<Role ID>","name":"<Role Name>"}] 

Идентификатор роли, по которому вы можете получить его:

GET: https://localhost:8543/auth/admin/realms/quarkus/roles/<ROLE_NAME>

и идентификатор пользователя из:

GET: https://localhost:8543/auth/admin/realms/quarkus/users/?username=<USERNAME>

Я загрузил следующие сценарии bash чтобы автоматизировать этот процесс.

person dreamcrash    schedule 22.12.2020