【问题标题】:Keycloak java change temporary passwordKeycloak java更改临时密码
【发布时间】:2021-03-21 18:08:52
【问题描述】:

我已重置用户密码并在 keycloak 中将其设置为临时密码。 当用户登录时,是否有一些 REST API 可以将临时密码更改为常规密码?重要的是不要使用 keycloak 的用户界面。我听说过实验性 API,但我找不到它的任何文档。感谢您的帮助

【问题讨论】:

  • 你如何做到这一点“我已经重置用户密码并在 keycloak 中将其设置为新的临时密码。”通过 Keycloak 管理控制台?
  • 您希望用户在用户第一次登录时更新密码吗?
  • @dreamcrash 是的,我想要这个。要将密码更改为临时密码,我使用公共 Keycloak API。 CredentialRepresentation passwordCred = new CredentialRepresentation(); passwordCred.setTemporary(false); passwordCred.setType(CredentialRepresentation.PASSWORD); passwordCred.setValue(password);

标签: java keycloak


【解决方案1】:

我听说过实验性 API,但找不到任何它的 文档。

我想你指的是Keycloak Admin API

假设:

我已重置用户密码并在 keycloak 中将其设置为新的临时密码。

已经通过端点完成,那么您可以做的是从该用户那里获取ID,您可以使用端点获取:

curl -X GET  <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/?username=<USER_NAME>

JSON 响应中提取用户ID。然后调用以下端点:

PUT <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/<USER_ID>/reset-password

带有请求负载:

{"type":"password","value":"<THE_PASSWORD_THAT_YOU_WANT_TO_SET>","temporary":false}

如果你想先把密码设置为临时密码,然后在用户第一次登录时,强制用户设置一个新的非临时密码,那么你需要调用如下端点:

PUT <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/<USER_ID>

带有请求负载:

{"requiredActions":["UPDATE_PASSWORD"]}

【讨论】:

  • 其实我的意思是这条评论中的特征stackoverflow.com/a/61388281/11564329
  • 发送这个请求我需要令牌。因为我想通过用户登录(而不是通过已将用户密码更改为临时密码的管理员)我无法获取用户的令牌,因为 keycloak 服务器Account is not fully set up 的响应。如果我发送没有令牌的请求,我会得到"error": "HTTP 401 Unauthorized"
  • 尝试执行以下操作获取管理员令牌,并与端点 PUT /auth/admin/realms//users/ 和负载 {"requiredActions" :["UPDATE_PASSWORD"]}
猜你喜欢
  • 1970-01-01
  • 2023-01-05
  • 2014-12-05
  • 2022-12-23
  • 2017-07-11
  • 2015-06-15
  • 2016-10-24
  • 2021-02-21
  • 2021-07-08
相关资源
最近更新 更多