keydrope admin restapi:未设置更新密码

4sup72z8  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(345)

我使用keydepe11,在用户注册过程中,我想触发一封电子邮件,要求用户设置密码。我已经用restemplate和keydropeat6实现了它,它运行得很好。现在我使用推荐的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();
    }

这不会导致错误,但未设置所需的操作。在注册过程中,我还通过一个单独的请求设置了领域角色,效果很好。
有人知道为什么请求没有抛出错误,但操作没有设置吗?
我已经在用户要求的操作中将管理客户机设置为领域管理。
我还不能使用我的smtp服务器,所以没有在key斗篷中注册,但我希望至少设置了字段。还是只有在注册smtp时才可用?
此外:
我和客户的行为也很奇怪。当我用webclient.exchange设置领域角色时,它可以正常工作。使用.retrieve()时,未设置realmrole。我尝试了两种解决方案,但都没有改变。

sycxhyv7

sycxhyv71#

如果您只想强制用户在不使用电子邮件功能的情况下更新其密码,则可以从以下位置更改您的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: Host : smtp.gmail.com ;
将端口设置为 587 如果您正在使用 TLS 或者 465 为了 SSL ;
设置为 ON 选择之一 Enabled TLS 或者 Enabled SSL ; Enabled authentication : ON .
Username 以及 Password 到电子邮件帐户,您将使用该帐户分别代表keydeapt及其密码发送电子邮件。
更详细的信息可以在这里找到。
我刚刚做了一个测试运行,在我的例子中,我已经从keydove管理员用户请求了一个令牌,并在 PUT 对终结点的请求:

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

使用json内容 '[UPDATE_PASSWORD]' ,然后配置 smtp 在我的 Realm 里遵循这些步骤。
最后,我收到了一封来自我的keydrope配置电子邮件,其中包含以下消息:
我们的管理员刚刚请求您通过>执行以下操作来更新您的deepunity帐户:更新密码。单击下面的链接>开始此过程。
链接到帐户更新
此链接将在12小时内过期。
如果您不知道您的管理员已请求此操作,请忽略此消息,不会更改任何内容。

相关问题