通过使用邮递员发布一个仅包含 1 个用户的 json,我能够在 Keycloak 中创建用户。http://localhost:8080/auth/admin/realms/master/users但是,当我尝试通过传递超过 1 条记录的 json 数组来创建超过 1 个用户时,我收到 500 Internal server error[ { "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 并在那里创建用户?
2 回答

一只甜甜圈
TA贡献1836条经验 获得超5个赞
请查看 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 客户端,使用起来更简单。查看 admin-client 示例。
所以这个 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

慕勒3428872
TA贡献1848条经验 获得超6个赞
在检查Keycloak 的 REST API后,似乎不接受用于创建用户的批量/批量请求。唯一的解决方案是POST
为每个用户发送请求。
这并不奇怪,HTTP 并没有为这种请求做好准备:
由于 HTTP 没有为处理批处理/批量请求和响应提供适当的指导。
从这个 RESTful 指南。看看它,它在 REST 开发中非常有用。
添加回答
举报
0/150
提交
取消