成功重置密码后,Keycloak发送电子邮件

时间:2020-02-28 21:43:16

标签: keycloak

Keycloak提供了开箱即用的“忘记密码”功能。这工作得很好。单击此按钮后,我将输入电子邮件,然后将链接发送到我的电子邮件。单击链接后,我可以重设密码。

我的问题是,能否在成功重置密码后让Keycloak发送电子邮件?

2 个答案:

答案 0 :(得分:1)

是的,如果您提供“重置凭据”身份验证流程的自定义副本,这是可能的。

请参阅有关如何定制流https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi的文档

我想您必须在“重置密码”身份验证器之后添加自定义身份验证器(例如“发送重置确认电子邮件”)。 对于此自定义身份验证器的实现,您只需要在authenticate()方法中发送确认电子邮件。 您可以查看keycloak内置的身份验证器,例如https://github.com/keycloak/keycloak/blob/master/services/src/main/java/org/keycloak/authentication/authenticators/resetcred/ResetCredentialEmail.java

此致

答案 1 :(得分:1)

感谢Fabrice的一些提示。我写了一个事件监听器来实现这一目标。

在侦听器中,我过滤了事件类型 UPDATE_PASSWORD ,并自己发送了电子邮件。像这样

public class ResetPasswordEventListenerProvider implements EventListenerProvider {

    public ResetPasswordEventListenerProvider() {
    }

    @Override
    public void onEvent(Event event) {
        if(event.getType() == EventType.UPDATE_PASSWORD){
            //Send the details to a Queue.
        }
    }

这些是我推荐的一些文章

https://dev.to/adwaitthattey/building-an-event-listener-spi-plugin-for-keycloak-2044

如果您在代码中未使用任何外部依赖项,则将代码打包为jar并进行部署即可,如上面的文章所述。但是,如果您的代码中具有任何外部依赖关系,则很难将其包含在结果jar中。 例如,在我遇到事件后,我将详细信息发送到Jms队列(其他服务将选择该细节以发送电子邮件)。所以我需要在pom中与Jms相关的依赖项。这并不简单。

因此,我将代码打包为ear并进行了部署。部署过程类似于jar。但是包装有些不同。在该项目中清楚显示了

https://github.com/thomasdarimont/keycloak-user-storage-provider-demo