无法通过 Keycloak Rest API 使用密码创建用户

时间:2021-01-29 13:15:20

标签: rest migration keycloak credentials keycloak-rest-api

我正在尝试从现有数据库迁移用户。密码使用 sha512 加密。 我将 Keycloak 10 与 REST API 结合使用。

我已阅读 CredentialRepresentation 并尝试将 JSON 放入属性 secretDatacredentialData 的字符串中。

我的帖子用户(具有正确的授权)返回“error”:“unknown_error”。

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。

My request

2 个答案:

答案 0 :(得分:1)

您的 JSON 有一些问题,首先而不是:

"secretData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"

就是:

"credentialData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"

因为您可以检查 Keycloak open source 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 open source repo

最后,salt 值必须是 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"}}

答案 1 :(得分:0)

查资料,发现问题: 这两行不相同:

credentialData": "{​​​​​​​\"algorithm\":\"sha512\",\"hashIterations\":1}​​​​​​​"

"credentialData": "{\"algorithm\":\"sha512\",\"hashIterations\":1}"

如果我将它们与 Character Code Finder 进行比较,十进制代码是不同的。 例如我的} 代码是“125, 8203, 8203, 8203, 8203, 8203, 8203, 8203”,而你的代码是“125”。

PS:对不起我的英语,我是法国人。

@dreamcrash:非常感谢您抽出宝贵时间