Keycloak提供了开箱即用的“忘记密码”功能。这工作得很好。单击此按钮后,我将输入电子邮件,然后将链接发送到我的电子邮件。单击链接后,我可以重设密码。
我的问题是,能否在成功重置密码后让Keycloak发送电子邮件?
答案 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