如何从 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、重置密码)但没有成功... 我用邮递员做了我的测试,我想知道我的令牌是否是要使用的?问题是否来自其他地方?
我有这个网址:
PUT
url/auth/admin/realms/realm/users/id user/reset-password/
我有这个标题:
Content-type
application/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 密码?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JMeter 使用 REST API Put 方法上传文件