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

#keycloak #keycloak-rest-api

#keycloak #keycloak-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

Ответ №1:

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

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

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

 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 для автоматизации этого процесса.