java—我们可以通过发送一个包含2个以上用户信息的json数组来创建key斗篷中的用户吗?

mzillmmw  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(367)

通过使用postman发布一个只包含1个用户的json,我可以在keydove中创建用户。
http://localhost:8080/auth/admin/realms/master/users
但是当我试图通过传递一个包含多个记录的json数组来创建多个用户时,我得到了一个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数组到keydepot并在那里创建用户?

anauzrmj

anauzrmj1#

在检查完keydepot的restapi后,似乎不接受创建用户的批量/批处理请求。唯一的解决办法就是 POST 对每个用户的请求。
这并不奇怪,http并没有为这种请求做好准备:
因为http没有为处理批处理/批量请求和响应提供适当的指导。
从这个宁静的向导。看看吧,它在其他开发中真的很有用。

n7taea2i

n7taea2i2#

请看一下keydepot邮件列表中添加的讨论
只是仔细检查了我建议的方法。我以为我们已经可以将用户导入到现有的领域,但事实并非如此。你必须创造整个 Realm 。仍然可以这样做,首先创建领域并添加一个示例用户。停止服务器并再次运行:

bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.realmName=<realm name> -Dkeycloak.migration.dir=<dir name>

替换领域名和目录名
在dir name中,您应该得到一些json文件。然后可以更新realm name-users-0.json以添加要导入的用户。
正如bill指出的那样,管理客户机可能是一种很好的替代方法。我们还有一个java客户机,使它更易于使用。看一下管理客户机示例。
所以这个网址可以帮助你看看这个链接,在这里输入链接说明
另一个选项是使用partialimport api导入用户(使用admin用户令牌):

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

相关问题