【问题标题】:Keycloak reset user password via REST API by hashKeycloak 通过 REST API 通过哈希重置用户密码
【发布时间】:2016-10-30 16:22:31
【问题描述】:
Keycloak 'reset-password' REST API 中使用的 CredentialRepresentation 包含散列算法、散列密码、散列迭代等字段。
这意味着我可以通过散列密码及其所有散列规范,而不是将纯文本密码传递给服务。这正是我想做的,因为传递纯文本密码感觉不对。
但是,当我尝试在没有纯文本值的情况下调用服务时,我收到 400 错误,并显示缺少纯文本值的错误消息。有没有办法只传递散列密码?
【问题讨论】:
标签:
rest
change-password
keycloak
【解决方案1】:
传递明文密码(当然是通过 HTTPS)允许 keycloak 使用领域的哈希算法策略对其进行哈希处理。
如果您想传入哈希密码值、迭代和算法,那么您还需要提供实现 PasswordHashProviderFactory 和 PasswordHashProvider 的哈希 SPI。而且我认为这不能通过 reset-password API 获得,但可以与 Update User API 一起使用(我还没有测试过)。
比手动指定新密码更好的安全做法是使用PUT /admin/realms/{realm}/users/{id}/execute-actions-email admin 调用和"UPDATE_PASSWORD" 作为必需的操作。这会导致 Keycloak 向用户发送一封电子邮件,其中提供了直接设置新密码的链接。