我使用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。我尝试了两种解决方案,但都没有改变。
1条答案
按热度按时间sycxhyv71#
如果您只想强制用户在不使用电子邮件功能的情况下更新其密码,则可以从以下位置更改您的url:
收件人:
在请求体中发送一个json,如:
对于电子邮件选项,您需要在您的领域中配置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
对终结点的请求:使用json内容
'[UPDATE_PASSWORD]'
,然后配置smtp
在我的 Realm 里遵循这些步骤。最后,我收到了一封来自我的keydrope配置电子邮件,其中包含以下消息:
我们的管理员刚刚请求您通过>执行以下操作来更新您的deepunity帐户:更新密码。单击下面的链接>开始此过程。
链接到帐户更新
此链接将在12小时内过期。
如果您不知道您的管理员已请求此操作,请忽略此消息,不会更改任何内容。