如何使用 REST API 在 keycloak 中重置用户密码

Posted

技术标签:

【中文标题】如何使用 REST API 在 keycloak 中重置用户密码【英文标题】:How to reset user password in keycloak using REST API 【发布时间】:2020-09-27 21:34:49 【问题描述】:

我想对我的 Keycloak 服务器进行休息调用。

根据文档应该很容易:https://www.keycloak.org/docs-api/10.0/rest-api/index.html#_executeactionsemail

所以在我开始编码之前,我想准备 Postman 调用,所以我的网址是

http://localhost:8080/auth/admin/realms/test/users/12345/execute-actions-email

在原始正文中我提供 ['UPDATE_PASSWORD']

我得到的是 401 Unauthorized 并且我无法得到我做错了什么?

主体:

标题是默认的:

【问题讨论】:

如果以下答案不清楚,请告诉我。 @tryingToLearn 谢谢!我的第二个问题是,是否有可能在任何领域都有特殊用户,而不是主领域管理员来获取令牌? 【参考方案1】:

要访问 Admin Rest API,您需要将 admin 令牌传递给 REST CALLS:

当您打开keycloak-url/auth 时,系统会提示您创建一个管理员帐户。

您可以使用此管理员帐户获取管理员令牌,如下所示。

请注意,您在以下调用中唯一需要做的更改是您的密钥斗篷服务器地址以及管理员用户名和密码的值。

您可以将上面获取的令牌传递给带有授权标头的 REST API。

请参阅my other SO post 以获取执行此操作的分步指南。

【讨论】:

【参考方案2】:

@tryingToLearn 非常感谢!

我会发布我所做的。

    获取主领域管理员帐户的令牌:

    在测试领域调用重置密码服务

我的正文有误,所以此请求的正确正文是 ["UPDATE_PASSWORD"],您可以注意到右下角的 204。

第二个问题是,是否有可能在任何领域都有特殊用户,而不是主领域管理员来获取令牌?

【讨论】:

关于第二个问题,我认为这是可能的,但还不确定步骤。 我以更温和的方式管理这种方式,我所做的是将按钮转发到 realm/account 以便用户可以自己更改密码 这意味着没有安全故障,在我看来这将是持有管理员凭据和令牌 这总是更好的方法。为用户提供更改密码的选项,而不是管理员更改密码。我之前假设您仅在某些特殊情况下通过管理员执行此操作。 @PiotrŻak 对于第二个问题:是的,创建一个具有“领域管理”客户端的“管理用户”作为角色映射的用户就足够了。

以上是关于如何使用 REST API 在 keycloak 中重置用户密码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Keycloak 保护前端和 REST API

如何使用 REST API 在 Keycloak 中创建具有密码的用户?

如何激活keycloak的REST API?

如何从 Keycloak REST API 获取用户?

如何在不使用 rest admin api 的情况下以编程方式(java)更新 keycloak 的用户详细信息?

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