Keycloak获取用户密码

Neo*_*Neo 4 keycloak keycloak-rest-api

在我的项目中,我需要从 Rest API 获取当前用户密码。

我搜索了 keycloak 4.8.3 最终文档,但找不到它。使用管理员用户,我可以在不知道当前密码的情况下更改密码。但我登录的用户可以是管理员,也可以不是。我发现出于安全原因,keycloak 不允许我这样做。总结一下,有没有办法激活该设置,或者有没有办法使用 Rest API 获取密码?谢谢。

dre*_*ash 8

更新:从Keycloak 17 Quarkus 发行版/auth开始,该路径已被删除。因此,您可能需要从该答案中显示的端点调用中删除 。/auth


通过 Rest API,由于显而易见的原因,人们无法获取密码。理想情况下,在安全设置中,即使是管理员,也不应该访问用户的密码。

从您写的评论中:

我可以使用像 boolean isPasswordCorrect(username,password) 这样的方法

一种方法是在您的 Realm 上创建一个客户端,如下所示:

  • 前往你的领域;
  • 客户;
  • 创建客户端;
  • 设置Access Type为公开;
  • 设置Direct Access Grants Enabled为开;
  • 节省;

现在,代表您要检查密码是否正确的用户向新创建的客户端请求令牌:

在此输入图像描述

如您所见,端点是:

<KEYCLOAK_HOST>/auth/realms/<REALM_NAME/protocol/openid-connect/token
Run Code Online (Sandbox Code Playgroud)

身体是:

client_id : <The client ID of the newly create client>
username : <The username>
password : <The password to be tested>
grant_type : password
Run Code Online (Sandbox Code Playgroud)

如果密码正确,您将得到一个令牌对象,否则您将得到以下响应:

{
    "error": "invalid_grant",
    "error_description": "Invalid user credentials"
}
Run Code Online (Sandbox Code Playgroud)