Можем ли мы создавать пользователей в Keycloak, отправляя массив json, содержащий более двух пользовательских данных?

Мне удалось создать пользователя в Keycloak, разместив json, содержащий только 1 пользователя, с помощью почтальона.

http://localhost:8080/auth/admin/realms/master/users

Но когда я попытался создать более 1 пользователя, передав массив json из более чем 1 записи, я получаю внутреннюю ошибку сервера 500.

[
  {
    "username": "user1",
    "firstName": "John",
    "attributes": {
      "pl_uid": null
    },
    "credentials": [
      {
        "temporary": true,
        "type": "password",
        "value": "ares2012"
      }
    ]
  },
  {
    "username": "1000195",
    "firstName": "Matt",
    "attributes": {
      "pl_uid": null
    },
    "credentials": [
      {
        "temporary": true,
        "type": "password",
        "value": "rx3o0t9f"
      }
    ]
  }
]

Есть ли способ отправить массив json в keycloak и создать там пользователей?


person Midhun Gopinath    schedule 04.02.2019    source источник


Ответы (2)


После проверки API REST Keycloak не работает похоже, массовые / пакетные запросы на создание пользователей принимаются. Единственное решение - отправить POST запрос каждому пользователю.

Это неудивительно, HTTP не подготовлен к такого рода запросам:

Поскольку HTTP не предоставляет надлежащих инструкций по обработке пакетных / массовых запросов и ответов.

из этого руководства по RESTful. Взгляните на него, это действительно полезно в разработке REST.

person Victor Calatramas    schedule 04.02.2019

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

Просто дважды проверил предложенный мной подход. Я думал, что мы сделали возможным импортировать пользователей в существующую область, но это не так. Вы должны создать целое царство. По-прежнему можно сделать это таким образом, сначала создайте область и добавьте пример пользователя. Остановите сервер и снова запустите его:

 bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.realmName=<realm name> -Dkeycloak.migration.dir=<dir name>
  • Заменить имя области и имя каталога

В имени каталога вы должны получить несколько файлов json. Затем вы можете обновить область name-users-0.json, чтобы добавить пользователей, которых вы хотите импортировать.

Как указывает Билл, хорошим альтернативным подходом может быть клиент-администратор. У нас также есть клиент Java, который упрощает использование. Взгляните на пример админ-клиента.

Так что этот URL может помочь. Взгляните на эту ссылку

Другой вариант - использовать partialImport API для импорта пользователей (используйте токен администратора):

access_token=`curl --data "grant_type=password&username=admin&password=admin&client_secret=secret&client_id=admin-cli" http://localhost:8180/auth/realms/master/protocol/openid-connect/token| jq -r .access_token`

curl -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization: Bearer $access_token"  --data "@$PWD/myrealm-users-0.json"  http://localhost:8180/auth/admin/realms/myrealm/partialImport
person Subodh Joshi    schedule 06.02.2019