Java KeyClope管理员rest api:未设置更新密码
在用户注册过程中,我想触发一封电子邮件,要求用户设置密码。 我已经用restTemplate和KeyClope 6实现了它,它工作得很好。 现在我使用推荐的webClientJava 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
@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