【问题标题】:Failing to create user with password via Keycloak Rest API无法通过 Keycloak Rest API 创建带密码的用户
【发布时间】:2021-05-03 09:57:52
【问题描述】:

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

我已阅读 CredentialRepresentation 和 y 尝试将 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。

【问题讨论】:

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


    【解决方案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

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

    【讨论】:

      【解决方案2】:

      有关信息,我发现了问题: 这两行并不相同:

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

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

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

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

      【讨论】:

      • 所以毕竟是编码问题,我希望用正确的编码更新我的答案
      猜你喜欢
      • 2020-02-07
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2020-04-17
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多