You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The group wants Keycloak to emit events for every change and to deliver them reliably.
Context
External systems consume Keycloak events, for example to synchronize data or to audit changes. They depend on events being complete and actually delivered.
Problems
Inconsistent coverage: some objects emit events, others do not. For some objects, not all CRUD operations produce an event.
No delivery guarantees: Keycloak guarantees neither that an event is sent nor that it is received.
Open questions
Does an EventType enum already exist, and if so, what exactly is missing?
Sources and related GitHub issues
Reliability:
External events store #45303: umbrella issue; names non-transactional event listeners and reliable delivery (e.g. to Kafka) as goals.
Consistency: define a complete, typed catalogue of event types (for example as an enum) that covers every resource and every CRUD operation.
Reliability: implement an event listener based on the transactional outbox pattern. The event is stored in the same database transaction as the change and delivered asynchronously afterwards.
Define the delivery semantics explicitly: at-least-once, ordering per resource, and an event ID consumers can use to deduplicate.
Keycloak core already contains outbox classes (OutboxStore, OutboxDrainerTask) built for SSF, according to Add a versioned event-export envelope and destination SPI #52616. Building on them is likely cheaper than a separate listener; change data capture is an alternative worth comparing.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
This was discussed as part of
The group wants Keycloak to emit events for every change and to deliver them reliably.
Context
External systems consume Keycloak events, for example to synchronize data or to audit changes. They depend on events being complete and actually delivered.
Problems
Open questions
Sources and related GitHub issues
Reliability:
Consistency:
Solution approaches
Suggested improvements
All reactions