Keycloak Send Email после успешного сброса пароля - PullRequest
0 голосов
/ 29 февраля 2020

Keycloak обеспечивает функциональность «Забыли пароль» из коробки. Это работает отлично. При нажатии на это я ввожу электронную почту, и на мой электронный адрес отправляется ссылка. При нажатии на ссылку я могу сбросить свой пароль.

Мой вопрос: возможно ли заставить Keycloak отправить электронное письмо после успешного сброса пароля?

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Да, это возможно, если вы предоставите настроенную копию потока аутентификации «Сброс учетных данных».

См. Документацию о том, как обрезать поток 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.

С уважением,

0 голосов
/ 04 марта 2020

Благодаря некоторым подсказкам Фабриса. Я написал, что получатель событий достигает этого.

В слушателе я отфильтровал тип события 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 (которая будет выбрана другой службой для отправки электронной почты). Так что мне нужны были связанные с JMS зависимости в поме. Это было не просто.

Поэтому я упаковал код как ear и развернул. Процесс развертывания похож на jar. Но упаковка немного отличается. Это ясно показано в этом проекте

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...