繁体   English   中英

Keycloak admin rest api:未设置更新密码

[英]Keycloak admin rest api: Update password not set

我使用 Keycloak 11,在用户注册过程中,我想触发一封电子邮件,要求用户设置密码。 我已经用 restTemplate 和 keycloak 6 实现了它,它运行良好。 现在我使用推荐的 webClient。

@Override
    public void triggerRequiredActionUpdatePassword(String userId) {
        String url = applicationConstants.getKeykloakUsersUri()+ "/" + userId + "/execute-actions-email";
        String[] actions = new String[]{"UPDATE_PASSWORD"};
        webClient.put()
                .uri(url)
                .contentType(MediaType.APPLICATION_JSON)
                .body(BodyInserters.fromValue(actions))
                .exchange()
                .block();
    }

这不会导致错误,但未设置所需的操作。 在注册期间,我还通过单独的请求设置了领域角色,并且工作正常。

有谁知道为什么请求不抛出错误但未设置操作?

我已在用户所需的操作中将 admin-client 设置为 realm-admin。

我还不能使用我的 smtp 服务器,所以没有在 keycloak 中注册,但我希望至少设置了该字段。 还是仅在注册 smtp 时才可用?

此外:

我对客户也有一种非常奇怪的行为。 当我使用 webClient.exchange 设置领域角色时,它工作正常。 当我使用 .retrieve() 时,未设置领域角色。 我为所需的操作尝试了两种解决方案,但没有任何变化。

如果您只想强制用户更新密码而不使用电子邮件功能,那么您可以从以下位置更改您的 URL:

 String url = applicationConstants.getKeykloakUsersUri()+ "/" + userId + "/execute-actions-email";

到:

 String url = applicationConstants.getKeykloakUsersUri()+ "/" + userId;

并在请求正文中发送一个 JSON,如:

{"id":"<YOUR_USER_ID>","requiredActions":["UPDATE_PASSWORD"]}

对于电子邮件选项,您需要在您的领域中配置 smtp

  • 转到您的Realm并单击realm settings
  • 切换到Email tab
  • 根据您的需要填写设置。 对于 Gmail:
    • Hostsmtp.gmail.com
    • 如果SSL使用TLS465 ,请将端口设置为587
    • 将选项Enabled TLSEnabled SSL设置为ON之一;
    • Enabled authenticationON
      • 分别将UsernamePassword设置为您将用于代表 keycloak 发送电子邮件的电子邮件帐户及其密码。

可以在此处找到更详细的信息。

我刚刚做了一个测试运行,在我的例子中,我从 Keycloak Admin 用户那里请求了一个令牌,并在PUT请求的正文中使用了管理员的访问令牌到端点:

{realm}/users/{id}/execute-actions-email

使用 JSON 内容'[UPDATE_PASSWORD]' ,然后我按照以下步骤配置了我的领域的smtp

最后,我收到了一封来自我的 Keycloak 配置电子邮件的电子邮件,其中包含以下消息:

我们的管理员刚刚要求您通过 > 执行以下操作来更新您的 DeepUnity 帐户:更新密码。 单击下面的链接以 > 开始此过程。

链接到帐户更新

此链接将在 12 小时内失效。

如果您不知道您的管理员已要求这样做,请忽略此消息,不会有任何更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM