【问题标题】:How can I update a Keycloak password from the REST API (PUT method)?如何从 REST API(PUT 方法)更新 Keycloak 密码?
【发布时间】:2019-12-11 08:37:57
【问题描述】:

我为 LDAP 用户设置了一个 keycloak 服务器,以便在我的应用程序上利用 SSO。 我想通过 Keycloak API 在我的应用程序上更改登录用户的密码。因此,将来,我的 Angular 应用程序将能够向 keycloak API 发出请求以更改登录用户的密码。

所以我尝试执行文档中指示的操作(方法 PUT、重置密码)但没有成功... 我用邮递员做了我的测试,我想知道我的令牌是否是要使用的?问题是否来自其他地方?

我有这个网址: PUT{url}/auth/admin/realms/{realm}/users/{id user}/reset-password/

我有这个标题:

Content-typeapplication/json

我有这个身体:

{
    "pass" : {
        "type": "password",
        "temporary": false,
        "value": "my-new-password"
    }
}

如果我没有尝试快速更新令牌,我会收到 401 错误(这让我说问题可能不是来自令牌),当我通过邮递员 oAuth 获得新令牌时收到 403 或 400 错误2.0

我有时会收到这样的信息:

Unrecognized field "pass" (class org.keycloak.representations.idm.CredentialRepresentation), not marked as ignorable

请帮帮我!

你可以在邮递员中看到here我的自动化,我不知道什么是“状态”

【问题讨论】:

    标签: rest api postman keycloak put


    【解决方案1】:

    您可以使用带有这些参数的 POST 方法:

    网址:

    http://[Server Address]/auth/admin/realms/[Realm Name]/users
    

    标题:

    Content-Type application/json
    

    主体:

    {
        "username": "test",
        "firstName": "test",
        "lastName": "test",
        "email": "test@gmail.com",
        "enabled": true,
        "credentials": [{
            "type": "password",
            "value": "123456",
            "temporary": false
        }]
    }
    

    【讨论】:

      【解决方案2】:

      PUT 的主体应该是 CredentialRepresentation,即

      {
        "type":"password",
        "value":"my-new-password",
        "temporary":false
      }
      

      【讨论】:

      • 刚刚对此进行了测试,尽管官方文档有建议,但它是唯一的选择。
      猜你喜欢
      • 2021-03-01
      • 2020-02-07
      • 2017-06-23
      • 2017-08-20
      • 2020-09-27
      • 2018-06-01
      • 2021-05-03
      • 1970-01-01
      • 2015-05-02
      相关资源
      最近更新 更多