我在 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 可能相关,但我不确定如何正确实现它。
任何指导或示例将不胜感激!
查看
CODE_TO_TOKEN
事件。当身份验证 code
交换令牌时调用。
监听所有事件,抓住 CODE_TO_TOKEN
并根据该事件写一封电子邮件。