Java KeyClope管理员rest api:未设置更新密码

Java KeyClope管理员rest api:未设置更新密码,java,keycloak,webclient,spring-webclient,keycloak-rest-api,Java,Keycloak,Webclient,Spring Webclient,Keycloak Rest Api,在用户注册过程中,我想触发一封电子邮件,要求用户设置密码。 我已经用restTemplate和KeyClope 6实现了它,它工作得很好。 现在我使用推荐的webClient @Override public void triggerRequiredActionUpdatePassword(String userId) { String url = applicationConstants.getKeykloakUsersUri()+ "/" + us

在用户注册过程中,我想触发一封电子邮件,要求用户设置密码。 我已经用restTemplate和KeyClope 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();
    }
这不会导致错误,但未设置所需的操作。 在注册过程中,我还通过一个单独的请求设置了realm角色,效果很好

有人知道为什么请求没有抛出错误,但操作没有设置吗

我已经在用户要求的操作中将管理客户端设置为领域管理

我还不能使用我的smtp服务器,所以没有在KeyClope中注册,但我希望至少设置了字段。或者它仅在注册smtp时可用

此外:

我和客户的行为也很奇怪。当我使用webClient.exchange设置领域角色时,它可以正常工作。使用.retrieve()时,未设置realmrole。
我尝试了两种解决方案来执行所需的操作,但没有任何更改。

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

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

并在请求正文中发送类似以下内容的JSON:

{"id":"<YOUR_USER_ID>","requiredActions":["UPDATE_PASSWORD"]}
使用JSON内容“
”[UPDATE_PASSWORD]”
,然后我在下面配置了我的领域的
smtp

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

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

此链接将在12小时内过期

如果您不知道您的管理员已请求此操作,请 忽略此消息,将不会更改任何内容

{"id":"<YOUR_USER_ID>","requiredActions":["UPDATE_PASSWORD"]}
{realm}/users/{id}/execute-actions-email