Mid*_*ath 7 java keycloak keycloak-services
通过使用邮递员发布仅包含 1 个用户的 json,我能够在 Keycloak 中创建用户。
但是当我尝试通过传递超过 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 并在那里创建用户?
请查看 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)
检查Keycloak 的 REST API后,似乎没有接受创建用户的批量请求。唯一的解决方案是POST为每个用户发送请求。
这并不奇怪,HTTP 没有为这种请求做好准备:
由于 HTTP 没有提供处理批量请求和响应的正确指导。
来自这个宁静的指南。看看它,它在 REST 开发中非常有用。
| 归档时间: |
|
| 查看次数: |
6741 次 |
| 最近记录: |