我们可以通过发送包含 2 个以上用户信息的 json 数组在 Keycloak 中创建用户吗?

Mid*_*ath 7 java keycloak keycloak-services

通过使用邮递员发布仅包含 1 个用户的 json,我能够在 Keycloak 中创建用户。

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"
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将 json 数组发送到 keycloak 并在那里创建用户?

Sub*_*shi 6

请查看 Keycloak 邮件列表中添加的讨论

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

 bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.realmName=<realm name> -Dkeycloak.migration.dir=<dir name>
Run Code Online (Sandbox Code Playgroud)
  • 替换领域名称和目录名称

在 dir name 中你应该得到一些 json 文件。然后,您可以更新领域名称-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
Run Code Online (Sandbox Code Playgroud)


Vic*_*mas 5

检查Keycloak 的 REST API后,似乎没有接受创建用户的批量请求。唯一的解决方案是POST为每个用户发送请求。

这并不奇怪,HTTP 没有为这种请求做好准备:

由于 HTTP 没有提供处理批量请求和响应的正确指导。

来自这个宁静的指南。看看它,它在 REST 开发中非常有用。