Hello All,
I am using Keycloak Version 22.0.5 and jdk17 and I have configured Custom Event Listener in my spring boot project, what the code basically does is when the user registers in Keycloak, the details of the user will be stored in MongoDB, I have done the mvn clean install and have copy pasted the jar file in the providers folder but I am unable to deploy or see the custom event listener in the Events tab in the Keycloak. Here is my code:
EventListenerProvider:
package com.te.custom.event;
public class CustomEventListenerProvider implements EventListenerProvider {
private final KeycloakSession session;
private final RealmProvider model;
@Autowired
private UserService userService;
private static final Logger LOGGER = LoggerFactory.getLogger(CustomEventListenerProvider.class);
public CustomEventListenerProvider(KeycloakSession session) {
this.session = session;
this.model = session.realms();
}
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public void onEvent(Event event) {
// Handle user registration event
if (EventType.REGISTER.equals(event.getType())) {
LOGGER.info("## NEW %s EVENT", event.getType());
LOGGER.info("-----------------------------------------------------------");
RealmModel realm = this.model.getRealm(event.getRealmId());
UserModel newRegisteredUser = this.session.users().getUserById(realm, event.getUserId());
String FName = newRegisteredUser.getFirstName();
String LName = newRegisteredUser.getLastName();
String Email = newRegisteredUser.getEmail();
Long cdate = newRegisteredUser.getCreatedTimestamp();
User user = new User();
user.setFirstName(FName);
user.setLastName(LName);
user.setEmail(Email);
user.setCreationDate(cdate);
userService.addUser(user);
}
}
@Override
public void onEvent(AdminEvent event, boolean includeRepresentation) {
// TODO Auto-generated method stub
}
}
EventListenerFactory:
package com.te.custom.event;
public class CustomEventListenerProviderFactory implements EventListenerProviderFactory {
@Override
public EventListenerProvider create(KeycloakSession session) {
// TODO Auto-generated method stub
return new CustomEventListenerProvider(session);
}
@Override
public void init(Scope config) {
// TODO Auto-generated method stub
}
@Override
public void postInit(KeycloakSessionFactory factory) {
// TODO Auto-generated method stub
}
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public String getId() {
// TODO Auto-generated method stub
return "userrepository";
}
}
D:\UserRepo\TE_Avenir_UserRepository\src\main\resources\META-INF\services\org.keycloak.events.EventListenerProviderFactory
com.te.custom.event.CustomEventListenerProviderFactory