Keycloak26 Migration
Pre-requisites
-
In version 5.X.X, IDP continues to support PostgreSQL and Oracle databases while phasing out support for MS SQL and MySQL.
-
The following versions of Dart Wrapper are required for token exchange functionality compatibility in IDP5:
- Master Controller: 162.1.0 or later
- MC Dart Wrapper: 72.2.0 or later
- MC iOS Wrapper: 166.2.0 or later
- MC Android Wrapper: 159.2.0 or later
-
The SCP Connector version should be 1.8.0 or later to ensure the successful migration of identity user changes in SCP and MPay services for IDP version 5 or higher.
-
Migration to IDP-5.3.0 cannot be done as a rolling update as it comes with a major update of the underlying Keycloak, which does not support such.
- To deploy a version 5.x.x:
- Scale down pods to 0
- Update the image
- Scale replicas back up one by one
- To deploy a version 5.x.x:
-
Please follow the required migration steps for those migrating from KC24 to KC26.
- Refer to the previous migration details here: Keycloak24 Migration
Breaking Changes
-
Metrics and health endpoints are now exposed only through a default management port 9000.
- Any configuration, monitoring, or probe using the main Keycloak port must be updated
- Health/metrics access through the standard server port is no longer supported
-
The default password hashing algorithm has been changed in the upgraded Keycloak base.
- Credentials hashed with the new version may not be compatible with older versions
- Rollback to a previous Keycloak version is unsafe
Core Highlights
-
Keycloak has been upgraded from version 24.0.5 to 26.4.7
-
Introduced the Unlink All Devices feature into the Core IDP standard image:
- Ensures a 1-to-1 device-to-user relationship
- When a new device is activated, all previously linked devices are automatically unlinked
-
Introduced a multitenant theme provider:
- Loads themes per realm
- Supports uploading, updating, and deleting custom themes through a new KOBIL Theme API
- Themes are stored in the database
- Synchronized across pods through cluster events
- Restored to the filesystem on startup for consistent multi-tenant branding
-
Introduced enhanced audit-event processing with Kafka event publishing for:
- Activation failures
- Successful logins
- Login/link failures
- Invalid password attempts
- OTP failures
- Along with RiskBits events enabling audit-event–based monitoring and forming the foundation for Grafana dashboards powered by Elasticsearch data
-
Introduced Infinispan cache–driven Server-Sent Events (SSE) for QR and TMS flows:
- Replacing socket communication
- Removing the IDP Async Helper module
-
Introduced a new
/sse/qrTms/subscribe/{trxId}endpoint:- Implemented server-side SSE logic to validate transactions
- Manage live connections with TTL and heartbeat
- Stream Infinispan cache–driven status updates to connected clients
-
Introduced a third Outbox table with 24-hour rotation:
- Distributing events across daily tables
- Reducing read/write contention
- Minimizing index bloat
- Improving overall processing performance
Configuration Notes
- In newer versions, the sub claim in token is provided via the basic client scope.
- When using partial import flows:
- Ensure that the basic client scope is configured as a default client scope for the relevant clients
- Ensures that the sub claim is included in access tokens
- When using partial import flows:
Removed
- The
qr/{sessionId}/callbackendpoint is no longer deprecated and has been reintroduced as an internal endpoint:internal/qr/{sessionId}/callback- Used to support SSE-based QR and TMS flows