Keycloak获取用户密码

3
在我的项目中,我需要从 Rest API 中获取当前用户的密码。
我查阅了 keycloak 4.8.3 final 的文档,但未找到相关信息。使用管理员用户可以在不知道当前密码的情况下更改密码。但我的登录用户可能是管理员也可能不是。我发现由于安全原因,keycloak 不允许这样做。总之,有没有办法激活该设置或者通过 Rest API 获取密码呢? 谢谢。
1个回答

8

更新:Keycloak 17 Quarkus distribution开始,/auth路径已被删除。因此,您可能需要从本答案中呈现的端点调用中删除/auth


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

从您编写的评论中可以看出:

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

一种方法是在您的Realm上创建一个客户端,具体步骤如下:

  • 进入您的 Realm;
  • 客户端;
  • 创建客户端;
  • Access Type设置为public;
  • Direct Access Grants Enabled设置为ON;
  • 保存;

现在代表要检查密码是否正确的用户,从新创建的客户端发出请求以获取令牌:

enter image description here

正如您所看到的,端点是:

<KEYCLOAK_HOST>/auth/realms/<REALM_NAME/protocol/openid-connect/token

而这个主体内容是:

client_id : <The client ID of the newly create client>
username : <The username>
password : <The password to be tested>
grant_type : password

如果密码正确,您将收到一个令牌对象,否则您将收到以下响应:
{
    "error": "invalid_grant",
    "error_description": "Invalid user credentials"
}

如果有任何待处理的操作,例如更新密码或配置 OTP,则将返回以下内容:{ "error": "invalid_grant", "error_description": "账户尚未完全设置" } - Chintan Kukadiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接