rest - 无法通过 Keycloak Rest API 创建带密码的用户
问题描述
我正在尝试从现有数据库迁移用户。密码使用 sha512 加密。我将 Keycloak 10 与 REST API 一起使用。
我已阅读CredentialRepresentation并尝试将 JSON 放入属性secretData和credentialData的字符串中。
我的帖子用户(具有正确的授权)返回“错误”:“未知错误”。
POST <someDomain>/auth/admin/realms/assure/users
{
"firstName": "test_encrypte",
"lastName":"test_encrypte",
"email":"jeremy.rafflin@mail.fr",
"credentials": [{
"type":"password",
"credentialData" : "{\"value\":\"fdVjg7Ed/dck1eSGobCHG4JtObyE3BNE3xZhCuuJ0PpmGB4d/OO+t0C5PwYhtOnUV++X2Jh0xmNdNu+sTkt4Bw==\",\"salt\":\"98cj35ZuYZR7S6N.MvZ2lA/UYfWAztXfF.nm/hFIQso\"}",
"secretData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"
}],
"username":"encrypt",
"emailVerified": false,
"enabled": true,
"attributes": {"assureId":"10406440"}
}
我独立使用keycloak。
解决方案
您的 JSON 有一些问题,首先不是:
"secretData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"
它是:
"credentialData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"
你可以在Keycloak 开源 repo中查看。
而不是
"credentialData" : "{\"value\":\"fdVjg7Ed/dck1eSGobCHG4JtObyE3BNE3xZhCuuJ0PpmGB4d/OO+t0C5PwYhtOnUV++X2Jh0xmNdNu+sTkt4Bw==\",\"salt\":\"98cj35ZuYZR7S6N.MvZ2lA/UYfWAztXfF.nm/hFIQso\"}",
实际上是:
"secretData" : "{\"value\":\"fdVjg7Ed/dck1eSGobCHG4JtObyE3BNE3xZhCuuJ0PpmGB4d/OO+t0C5PwYhtOnUV++X2Jh0xmNdNu+sTkt4Bw==\",\"salt\":\"98cj35ZuYZR7S6N.MvZ2lA/UYfWAztXfF.nm/hFIQso\"}",
你可以在Keycloak 开源 repo中查看。
最后,盐值必须是 base 64 编码,所以而不是
98cj35ZuYZR7S6N.MvZ2lA/UYfWAztXfF.nm/hFIQso\
它一定要是:
OThjajM1WnVZWlI3UzZOLk12WjJsQS9VWWZXQXp0WGZGLm5tL2hGSVFzbw==
您正在寻找的 Json 是:
{
"firstName": "test_encrypte",
"lastName": "test_encrypte",
"email": "jeremy.rafflin@ageo.fr",
"credentials": [
{
"type": "password",
"secretData": "{\"value\":\"fdVjg7Ed/dck1eSGobCHG4JtObyE3BNE3xZhCuuJ0PpmGB4d/OO+t0C5PwYhtOnUV++X2Jh0xmNdNu+sTkt4Bw==\",\"salt\":\"OThjajM1WnVZWlI3UzZOLk12WjJsQS9VWWZXQXp0WGZGLm5tL2hGSVFzbw==\"}",
"credentialData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"
}
],
"username": "encrypt",
"emailVerified": false,
"enabled": true,
"attributes": {
"assureId": "10406440"
}
}
推荐阅读
- r - 是否可以仅使用 R 中的起点和终点信息绘制图形(一种箱线图)?
- go - 是否将 net.Dialer 上的超时和 Connection 上的最后期限设置为相同的行为?
- c# - 在 Visual Studio 中编辑的 Unity 脚本不提供自动完成功能...2020
- javascript - 我想做一个 Discord.js 反应收集器、计数器、计时器和角色 dm
- angular - 如何在 Angular 组件中显示 HTML Dom/Angular 组件?
- c - 为什么指向结构的指针在函数中不可覆盖?
- php - 仅执行插入时无法更新城市
- javascript - 如何根据选择另一个下拉选项来聚焦搜索文本框 - vuejs
- apache-kafka - 如何列出写入某个 kafka 主题的生产者
- flutter - Dart // Flutter:如何根据条目的内容从列表中删除项目