Created
June 22, 2026 13:37
-
-
Save thomasdarimont/0ab0e26f27a45fb14fa224830408c6ae to your computer and use it in GitHub Desktop.
Keycloak example extension with @KeycloakProvider without Service Manifest Files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package demo; | |
| import org.jboss.logging.Logger; | |
| import org.keycloak.Config; | |
| import org.keycloak.events.Event; | |
| import org.keycloak.events.EventListenerProvider; | |
| import org.keycloak.events.EventListenerProviderFactory; | |
| import org.keycloak.events.admin.AdminEvent; | |
| import org.keycloak.models.KeycloakSession; | |
| import org.keycloak.models.KeycloakSessionFactory; | |
| import org.keycloak.provider.KeycloakProvider; | |
| public class MyEventListenerProvider implements EventListenerProvider { | |
| private final KeycloakSession session; | |
| public MyEventListenerProvider(KeycloakSession session) { | |
| this.session = session; | |
| } | |
| @Override | |
| public void onEvent(Event event) { | |
| System.out.println("MyEventListenerProvider.onEvent " + event.getType()); | |
| } | |
| @Override | |
| public void onEvent(AdminEvent event, boolean includeRepresentation) { | |
| System.out.println("MyEventListenerProvider.onEvent " + event.getResourceType() +" " + event.getResourcePath()); | |
| } | |
| @Override | |
| public void close() { | |
| } | |
| @KeycloakProvider | |
| public static class Factory implements EventListenerProviderFactory { | |
| private static Logger LOG = Logger.getLogger(Factory.class); | |
| @Override | |
| public EventListenerProvider create(KeycloakSession session) { | |
| return new MyEventListenerProvider(session); | |
| } | |
| @Override | |
| public void init(Config.Scope config) { | |
| LOG.info("#init"); | |
| } | |
| @Override | |
| public void postInit(KeycloakSessionFactory factory) { | |
| LOG.info("#postInit"); | |
| } | |
| @Override | |
| public void close() { | |
| } | |
| @Override | |
| public String getId() { | |
| return "my-event-listener"; | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <project xmlns="http://maven.apache.org/POM/4.0.0" | |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
| <modelVersion>4.0.0</modelVersion> | |
| <groupId>com.github.thomasdarimont.training</groupId> | |
| <artifactId>keycloak-provider-annotation-demo</artifactId> | |
| <version>1.0-SNAPSHOT</version> | |
| <properties> | |
| <maven.compiler.source>21</maven.compiler.source> | |
| <maven.compiler.target>21</maven.compiler.target> | |
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
| </properties> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.keycloak</groupId> | |
| <artifactId>keycloak-services</artifactId> | |
| <version>999.0.0-SNAPSHOT</version> | |
| <scope>provided</scope> | |
| </dependency> | |
| </dependencies> | |
| </project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment