не может создать пользователя в keycloak. Получение статуса 403

Я пытаюсь программно получить доступ к созданию пользователя в keycloak. Но я получаю 403 в качестве кода состояния. Я перехожу по ссылке ниже.

https://technology.first8.nl/programmatically-adding-users-in-keycloak/

Может кто-нибудь мне помочь? Заранее спасибо

Я использую следующий код для создания пользователя

Keycloak kc = Keycloak.getInstance(
                     "http://{server name}:8080/auth",
                     "{realm name}", // the realm to log in to
                     "{useraname}", 
                     "{password}",  // the user
                     "{client id}",
                     "{client secret key}");

            CredentialRepresentation credential = new CredentialRepresentation();
            credential.setType(CredentialRepresentation.PASSWORD);
            credential.setValue("test123");
            UserRepresentation user = new UserRepresentation();
            user.setUsername("codeuser");
            user.setFirstName("sampleuser1");
            user.setLastName("password");

            user.setCredentials(Arrays.asList(credential));
            user.setEnabled(true);
            Response result = kc.realm("{realm name}").users().create(user);

response.status поступает как 403


person Programmer    schedule 27.03.2018    source источник


Ответы (3)


Я столкнулся с той же проблемой. Вот как я это исправил.

  1. Создайте роль, которая имеет как минимум роль управления областью manage-users  введите описание изображения здесь

введите описание изображения здесь

Обновление пользовательского интерфейса для сервера 9.0.2  Обновление пользовательского интерфейса для сервера 9.0.2

  1. Перейдите на вкладку Scope вашего клиента и добавьте роль в свой Realm Roles  введите описание изображения здесь
person ninyarko    schedule 21.11.2018
comment
У меня это работает с сервером KC 3.4.0.Final и той же версией клиента администратора; fwiw строфа Gradle, которая у меня есть, compile group: 'org.keycloak', name: 'keycloak-admin-client', version: '3.4.0.Final' - person ; 24.01.2019
comment
Я правда не понимаю, где ты нашел все эти роли ... У меня нет ничего из этого херня ... - person Madeo; 28.06.2021

Если вы не используете admin пользователь из master области.

Вам необходимо назначить правильные роли, такие как manage-users роль из realm-management клиента, для пользователя, которого вы используете для получения экземпляра Keycloak.

Добавление пользователю ролей управления областью

person ravthiru    schedule 28.03.2018
comment
Я назначил роли, как показано выше, но я получаю статус запрещенного - person Programmer; 28.03.2018
comment
Можете ли вы найти сообщение об ошибке, используя ErrorRepresentation error = response.readEntity (ErrorRepresentation.class); error.getErrorMessage () - person ravthiru; 28.03.2018
comment
RESTEASY003145: невозможно найти MessageBodyReader типа содержимого / и типа class org.keycloak.presentations.idm.ErrorRepresentation это исключение возникает, когда я добавляю указанную выше строку кода - person Programmer; 28.03.2018
comment
У вас должна быть jar-карта resteasy-jackson2-provider в вашей зависимости - person ravthiru; 03.04.2018

Я столкнулся с той же проблемой с KeyCloak 9.0.3. Что в итоге сработало для меня:

  1. Используйте клиент admin-cli с учетными данными клиента в целевой области (где я пытаюсь создать пользователя)
curl \
  -d "client_id=admin-cli\
  -d "client_secret=<YOUR_CLIENT_SECRET>" \
  -d "grant_type=client_credentials" \
  "http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token"

Я не уверен, почему, но использование клиента администратора в главной области просто не сработало для меня.

  1. Настройте клиент admin-cli в целевой области с ролью, указанной в правильном ответе выше.

  2. Помимо добавления новой роли в Scope, мне также пришлось добавить роль в роли учетной записи службы.

Токен доступа к учетным данным клиента BTW даже не упоминается как опция в документации Admin Rest API для Keycloak 9.0.3, но он работает.

person crimson_sails    schedule 10.08.2020