如何从 REST API(PUT 方法)更新 Keycloak 密码?

Posted

技术标签:

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

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

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

我有这个网址: PUTurl/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我的自动化,我不知道什么是“状态”

【问题讨论】:

【参考方案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

【讨论】:

刚刚对此进行了测试,尽管官方文档有建议,但它是唯一的选择。

以上是关于如何从 REST API(PUT 方法)更新 Keycloak 密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 REST API 中的 PUT 方法上传文件?

如何使用 JMeter 使用 REST API Put 方法上传文件

用于创建资源的 REST API 补丁方法

REST API (更新删除文档)

Mailchimp API Put 或 Patch 使用 Delphi REST

REST API:PUT但不需要json中的所有数据