在 Keycloak 中为用户颁发 JWT 令牌时如何发送电子邮件

问题描述 投票:0回答:1

我在 Keycloak 中实现了一个自定义事件监听器,每当用户登录时都会发送电子邮件。现在,我想更改它,以便在向用户颁发 JWT 令牌时发送电子邮件。以下是我当前的代码:

public class CustomEventListenerProvider implements EventListenerProvider {

    private final KeycloakSession session;
    private final JavaMailSenderImpl mailSender;
....
public void onEvent(Event event) {
        if (EventType.LOGIN.equals(event.getType())) // I want to change this condition {
            String userId = event.getUserId();
            String email = session.users().getUserById(session.getContext().getRealm(), userId).getEmail();
            sendEmail(email);
        }
    }


private void sendEmail(String email) {
        SimpleMailMessage message = new SimpleMailMessage();
    
        message.setTo(email);
        message.setSubject("JWT Issued");
        message.setText("A new JWT token has been issued for your account.");

        mailSender.send(message);
    }

我想在颁发 JWT 令牌时发送电子邮件,而不是在用户登录时发送电子邮件,但我找不到合适的事件类型。我怎样才能实现这个目标?我应该监听哪个事件,我应该如何修改我的代码?

我查看了 Keycloak 文档,但找不到此特定用例的明确示例。我怀疑 EventType.CODE_TO_TOKEN 可能相关,但我不确定如何正确实现它。

任何指导或示例将不胜感激!

spring-boot jwt keycloak event-listener
1个回答
0
投票

查看

CODE_TO_TOKEN
事件。当身份验证
code
交换令牌时调用。 监听所有事件,抓住
CODE_TO_TOKEN
并根据该事件写一封电子邮件。

© www.soinside.com 2019 - 2024. All rights reserved.