Skip to content

Releases: keycloak/keycloak

nightly

27 Sep 02:22
0d17380

Choose a tag to compare

nightly Pre-release
Pre-release
Optimize SQL statements and transactions for cacheless profile

Closes #49697

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>

26.6.3

04 Jun 17:00

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

  • #47707 CVE-2026-4800 lodash vulnerable to Code Injection via `_.template` imports key names account/ui
  • #47935 [CVE-2026-4874] Server-Side Request Forgery via OIDC token endpoint manipulation oidc
  • #48036 [CVE-2026-37977] CORS Access-Control-Allow-Origin reflected from unverified JWT azp claim on UMA token endpoint authorization-services
  • #48709 [CVE-2026-7500] Improper Access Control on Keycloak Server when the account Account API feature is disabled account/api
  • #48805 CVE-2026-42581 Netty HTTP/1.0 TE+CL Coexistence Bypasses Smuggling Sanitization
  • #49118 [CVE-2026-8922] OIDC token introspection ignores realm-level notBefore when client-level notBefore is set oidc
  • #49133 [CVE-2026-8830] Missing server-side WebAuthn validations during credential registration authentication/webauthn
  • #49174 [CVE-2026-9088] Group Members Endpoint Bypasses User Profile Permissions admin/fine-grained-permissions
  • #49175 [CVE-2026-9087] Cross-Session Email Verification Proof Not Bound to Upstream Identity in First-Broker-Login identity-brokering
  • #49426 [CVE-2026-9802] Server restart resets startupTime, allowing reuse of rotated refresh tokens when revokeRefreshToken=true oidc
  • #49428 [CVE-2026-9794] SAML ECP faultstring discloses client existence and configuration state saml
  • #49431 [CVE-2026-9791] Organization data exposed in tokens and account API when Organizations feature is disabled at realm level organizations
  • #49433 [CVE-2026-0707] ClientRegistrationAuth DoS via malformed Authorization header (CVE-2026-0707 incomplete fix) admin/api
  • #49434 [CVE-2026-9801] DoS in LDAP federation via malformed PasswordPolicyControl ldap
  • #49435 [CVE-2026-9704] Privilege escalation via silent subject_token removal in token exchange oidc
  • #49436 [CVE-2026-9792] ROPC grant bypass in client policy enforcement oidc

Weaknesses

  • #48978 UNSAFE_PATH_PATTERN regex to cover percent-encoded terminators and control characters oidc
  • #48986 Authorization Services: NullPointerException in UMA permission grant when stale permission ticket references removed scope authorization-services
  • #48987 Account API: Resource sharing endpoints ignore userManagedAccessAllowed realm setting authorization-services
  • #49086 Account resource sharing resolves recipient by username before email, granting access to wrong user authorization-services

Enhancements

  • #48311 Upgrade to Quarkus 3.33.2 dist/quarkus
  • #48695 Add startup check for missing database indexes
  • #49148 Add SPI option to disable FD_SOCK2 failure detection
  • #49526 Update to simple-git 3.36.0
  • #49530 Update to uuid >=13.0.1

Bugs

  • #45957 Handling of CORS requests in the Admin UI ineffective / open for CSRF admin/ui
  • #47036 Account ResourceService user endpoint returns excessive user data in UMA-enabled realms core
  • #48324 UMA IS_ADMIN filter breaks ticket finding authorization-services
  • #48430 Wildcard redirect URI matching does not enforce host boundary when * is placed directly after hostname oidc
  • #48432 ClientAdapter using wrong value for isFrontChannelLogout oidc
  • #48438 Keycloak 26.6.0/26.6.1 exits (code 1) ~100ms after async realm migration completes; migrations not persisted core
  • #48455 ContextNotActiveException during error handling core
  • #48464 Incomplete SCIM schema definition for objects scim
  • #48529 Broken downstream docs formatting on Kubernetes topic docs
  • #48584 Updating Keycloak to 26.6.x fails on SQL Server with case sensitive collation core
  • #48628 Client registerNode and unregisterNode endpoints fail authenticating the client core
  • #48681 ExternalLinksTest: oasis-open.org/standard/saml/ returns 403 in CI causing flaky documentation check ci
  • #48716 Missing index IDX_IDP_FOR_LOGIN and IDX_CLIENT_ATT_BY_NAME_VALUE for Microsoft SQL Server core
  • #48744 Input validation/ Unhandled NullPointerException on alg:none JWT in Bearer Authentication authentication
  • #48792 Virtual Thread checking is not working infinispan
  • #48806 NPE when accessing Account UI and the ACCOUNT feature is disabled account/api
  • #48877 Keycloak 26.6.1 does not persist UPDATE_PASSWORD for LDAP/AD federated users after temporary password reset ldap
  • #48904 Consistent 500 on DELETE of realms via non-browser clients calling REST API admin/api
  • #49058 Keycloak fails to run tests with embedded undertow dist/quarkus
  • #49140 Workflows documentation: offboarding example is incorrectly enclosing the list of revoked roles with double quotes workflows
  • #49149 Disable single thread sender in JGroups infinispan
  • #49151 FIPS jobs fail in CI because java-25-openjdk-devel package is missing testsuite
  • #49163 Enable JGroups message stats infinispan
  • #49194 Use Java 25 again for FIPS jobs testsuite
  • #49222 Incorrect link to Themes documentation docs
  • #49224 Broken links in UI Customization Guide docs
  • #49263 Use the PostgreSQL driver privacy option `logServerErrorDetail` dist/quarkus
  • #49265 Since Hibernate 7, the workaround to not log-and-throw Hibernate errors does not longer work dist/quarkus
  • #49274 JavaScript CI hangs when installing playwright testsuite
  • #49288 Link issue in the documentation for https://www.rfc-edi...
Read more

26.6.2

19 May 12:41

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

  • #47485 CVE-2026-33871 HTTP/2 CONTINUATION Frame Flood Denial of Service
  • #47486 CVE-2026-33870 RFC violation: HTTP Request Smuggling primitive via Chunked Extension Quoted-String Parsing
  • #47932 [CVE-2026-4628] Improper Access Control on Keycloak Server through UMA resource management endpoints via PUT parameters authorization-services
  • #48049 [CVE-2026-37980] Stored XSS in select-organization.ftl - FreeMarker HTML-escape insufficient in inline JS handler organizations
  • #48275 CVE-2026-5588 Bouncy Castle Crypto Package For Java: Use of a Broken or Risky Cryptographic Algorithm vulnerability in bcpkix modules core
  • #48388 [CVE-2026-6856] Acceptable AAGUID policy bypass via packed self-attestation in WebAuthn registration authentication/webauthn
  • #48570 [CVE‐2026‐0636, CVE‐2026‐3505, CVE‐2026‐5598] Multiple bouncycastle CVEs core
  • #49108 [CVE-2026-7307] Denial of service when sending a crafted request to the /saml endpoint
  • #49109 [CVE-2026-7504] Security Vulnerability Report: Redirect URI Validation Bypass in Keycloak
  • #49110 [CVE-2026-7571] Access token disclosure and implicit flow bypass via forged client data
  • #49111 [CVE-2026-7507] Session fixation in OIDC login flow leading to account takeover
  • #49112 [CVE-2026-37982] Execute-actions token replay allows unauthorized WebAuthn credential enrollment on victim account
  • #49113 [CVE-2026-37979] OIDC Introspection endpoint does not enforce audience restriction, leaking claims from lightweight access tokens
  • #49114 [CVE-2026-37978] Cross-role PII leakage via evaluate-scopes endpoints bypasses user view permission
  • #49115 [CVE-2026-4630] Keycloak Authorization Services Protection API IDOR (Cross-Resource Server Access)
  • #49116 [CVE-2026-37981] Broken Access Control in Account Resources User Lookup allows PII enumeration

Enhancements

  • #47728 Monitor backups for CNPG - describe how to monitor it in the CNPG for backups installation guide
  • #47734 Add dedicated "Monitoring Standbys" section to the general installation documentation
  • #48329 JDBC_PING in 26.6 should not fail with 26.7 schema changes
  • #48348 Escape expressions in JS blocks in FTL pages
  • #48687 Upgrade to Quarkus 3.33.1.1

Bugs

  • #38526 Duplicate user attribute values cannot be removed core
  • #40602 Account UI reports "Something went wrong" when opening an unknown path account/ui
  • #47882 Broken link in deploy-cnpg docs
  • #47901 Realm import with --import-realm fails with ModelValidationException when Admin Permissions is enabled admin/fine-grained-permissions
  • #47915 FreeMarker templates allow instantiation of new objects and even running OS commands login/ui
  • #47987 FGAP v2 Specific Group permission has no scopes found in resource admin/fine-grained-permissions
  • #48030 Update to operator version 26.6.0 needs deletion of all objects operator
  • #48040 User session limit generates fatal error authentication
  • #48094 Wrong referenced resource type in Workflow handling for clients core
  • #48123 Clarify canonicalization in X.509 authentication authentication
  • #48143 Ordering of permission and policy calls leads to exposure of a client ID admin/api
  • #48185 Deleted workflow still attempting to run workflows
  • #48241 JavaScript Injection in frontchannel-logout.ftl via frontchannel-logout.title authentication
  • #48259 Kubernetes identity providers docs still mention it to be a preview feature docs
  • #48313 No escape approach for JS code inside the front channel logout FTL login/ui
  • #48536 Review migration guide for rolling updates changes workflows
  • #48629 WindowsServiceDistTest.testServiceLifecycle fails on slower runners due to insufficient startup timeout ci

26.6.1

15 Apr 13:58

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

Enhancements

  • #47839 Update CloudNativePG to 1.29
  • #47909 Database data at rest encryption

Bugs

  • #47435 AuroraDB IT CI workflow not cleaning up databases testsuite
  • #47737 deploy-testsuite profile is incomplete, causing discrete testsuite execution to fail testsuite
  • #47776 False session type of access token in offline_access refresh token flow with scope parameter without offline_access scope oidc
  • #47827 az vm create fails with JSON parsing error ci
  • #47872 v26.6.0 Operator flood logs with warnings operator
  • #47889 Not possible to sync latest keycloak-admin-client to keycloak-client admin/client-java
  • #47904 @keycloak/keycloak-admin-client fails to install in version 26.6.0 admin/client-js
  • #47905 invalid package reference in keycloak-admin-ui admin/ui
  • #47908 MigrateTo26_6_0 modifies custom browser flows, breaking existing realm authentication organizations
  • #47929 User profile multiselect options not highlighted as selected in dropdown admin/ui
  • #47955 IdentityProviderAuthenticator creates an infinite redirect loop when an IdP returns an error (e.g. access_denied) and the login was initiated with kc_idp_hint identity-brokering
  • #48015 Missing explicit docs anchor for organizations docs
  • #48032 Endpoint Response Text during Bootstrap contains Typo: Boostrap dist/quarkus

26.6.0

08 Apr 08:54

Choose a tag to compare

Highlights

This release features new capabilities for users and administrators of Keycloak. The highlights of this release are:

  • JWT Authorization Grant, enabling external-to-internal token exchange using externally signed JWT assertions.

  • Federated client authentication, eliminating the need to manage individual client secrets in Keycloak.

  • Workflows, enabling administrators to automate realm administrative tasks such as user and client lifecycle management.

  • Zero-downtime patch releases, allowing rolling updates within a minor release stream without service downtime.

  • The Keycloak Test Framework, replacing the previous Arquillian-based solution.

All of these features are now fully supported and no longer in preview. Read on to learn more about each new feature. If you are upgrading from a previous release, also review the changes listed in the upgrading guide.

Security and Standards

JWT Authorization Grant (supported)

JWT Authorization Grant (RFC 7523) is designed to implement external-to-internal token exchange use cases. This grant allows using externally signed JWT assertions to request OAuth 2.0 access tokens.

In this release, JWT Authorization Grant is promoted from preview to supported. See the JWT Authorization Grant guide for additional details.

Federated client authentication (supported)

Federated client authentication allows clients to leverage existing credentials once a trust relationship with another issuer exists. It eliminates the need to assign and manage individual secrets for each client in Keycloak.

Federated client authentication is now promoted to supported, including support for client assertions issued by external OpenID Connect identity providers and Kubernetes Service Accounts.

Since the OAuth SPIFFE Client Authentication specification is still in draft status, this feature remains a preview feature in Keycloak.

New guide about Demonstrating Proof-of-Possession (DPoP)

A new guide for OAuth 2.0 Demonstrating Proof-of-Possession (DPoP) in the Securing applications Guides provides information on how to mitigate the risk of stolen tokens by making tokens sender-constrained.

See Securing applications with DPoP for more details.

Identity Brokering APIs V2 (preview)

A new preview version 2 for the Identity Brokering APIs is introduced in this release. When brokering is used during the authentication process, Keycloak allows you to store tokens and responses issued by the external Identity Provider. Applications can call a specific endpoint to retrieve those tokens, which, in turn, can be used to get extra user information or invoke endpoints in the external trust domain. The new version improves the token retrieval endpoint to substitute the internal to external Token Exchange (use case for the legacy Token Exchange V1).

For more information, see the chapter Identity Brokering APIs in the Server Developer Guide.

Step-up authentication for SAML (preview)

The feature step-up-authentication-saml extends the step-up authentication to include the SAML protocol and clients. This feature is in preview mode. Additional information is available in the Server Administration Guide.

OAuth Client ID Metadata Document (experimental)

OAuth Client ID Metadata Document (CIMD) is an emerging standard that defines a JSON document format for describing OAuth 2.0 client metadata. Since version 2025-11-25, the Model Context Protocol (MCP) requires an authorization server to comply with CIMD. Keycloak now includes experimental support for CIMD, allowing it to serve as an authorization server for MCP version 2025-11-25 or later.

See Integrating with Model Context Protocol (MCP) for the updated guide including CIMD.

Many thanks to Takashi Norimatsu for the contribution.

Administration

Workflows (supported)

Workflows allow administrators to automate and orchestrate realm administrative tasks, bringing key capabilities of Identity Governance and Administration (IGA) to Keycloak. By defining workflows in YAML format, you can automate the lifecycle of realm resources such as users and clients based on events, conditions, and schedules.

In this release, Workflows is promoted from preview to supported. This release also includes new built-in steps, a troubleshooting guide, and various improvements to the workflow engine.

For more details, see the Managing workflows chapter in the Server Administration Guide.

Organization groups

Organizations now support isolated group hierarchies, allowing each organization to manage its own teams and departments without naming conflicts across the realm. This update includes Identity Provider mappers to automatically assign federated users to organization groups based on external claims. Group membership is automatically included in OIDC tokens and SAML assertions when an organization context is requested.

For more details, see the Managing organization groups guide.

New Groups scope for user membership changes

Fine-Grained Admin Permissions (FGAP) now includes a new Groups scope: manage-membership-of-members.

This scope is now used as the group-side bridge for evaluating user-side manage-group-membership permissions based on a user’s current group memberships. The existing manage-membership scope keeps its current behavior for target group membership management operations.

Looking up client secrets via the Vault SPI

Secrets for clients can now be managed and looked up by the Vault SPI.

Thank you to Tero Saarni for contributing this change.

Forcing password change for LDAP users

There is now initial support for LDAP password policy control. The support is limited to prompting users to update their password when the LDAP server indicates that the password must be changed. Previously, Keycloak let the user in and ignored the mandatory password reset. There is a new optional setting “Enable LDAP password policy” in the LDAP advanced settings to enable this.

Thank you to Tero Saarni for contributing this change.

Configuring and Running

Java 25 support

Keycloak now supports running with OpenJDK 25. The server container image continues to use OpenJDK 21 for now to support FIPS mode. For details, see the note in the FIPS guide.

Zero-downtime patch releases (supported)

Zero-downtime patch releases allow you to perform rolling updates when upgrading to a newer patch version within the same major.minor release stream without service downtime.

Read more

26.5.7

02 Apr 14:47

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

  • #45493 CVE-2025-14083 keycloak-server: Keycloak: Improper Access Control in Admin REST API leads to information disclosure admin/api
  • #45569 CVE-2026-1002 - io.vertx/vertx-core: static handler component cache can be manipulated to deny the access to static files
  • #47069 CVE-2026-3429 Improper Access Control for LoA During Credential Deletion account/api
  • #47716 CVE-2026-4634 Keycloak Application-Level DoS via Scope Processing
  • #47717 CVE-2026-4636 UMA Policy Resource Injection Allows Unauthorized Cross-User Permission Grants
  • #47718 CVE-2026-3872 Redirect URI validation bypass via ..;/ path traversal in OIDC auth endpoint
  • #47719 CVE-2026-4282 Privilege escalation via forged authorization codes due to SingleUseObjectProvider isolation flaw

Enhancements

  • #46631 Upgrade to Quarkus 3.27.3 dist/quarkus

Bugs

  • #45204 Call without Host header throws uncaught error core

26.5.6

19 Mar 06:45

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

  • #45645 CVE-2026-1180 - Blind Server-Side Request Forgery (SSRF) in Keycloak OIDC Dynamic Client Registration via jwks_uri oidc
  • #45647 CVE-2026-1035 - Keycloak Refresh Token Reuse Bypass via TOCTOU Race Condition oidc
  • #45650 CVE-2025-14777 - Keycloak IDOR in realm client creating/deleting
  • #45653 CVE-2025-14082 keycloak-server: Keycloak Admin REST API: Improper Access Control leads to sensitive role metadata information disclosure
  • #46719 CVE-2026-3121 - Keycloak: Privilege escalation via manage-clients permission
  • #46723 CVE-2026-3190 - Information Disclosure via improper role enforcement in UMA 2.0 Protection API core
  • #46922 CVE-2026-3911 Keycloak: Information disclosure of disabled user attributes via administrative endpoint user-profile
  • #47062 CVE-2026-2366 Authorization Bypass: Unprivileged tokens can enumerate user organization memberships organizations

Bugs

  • #45889 Federated user disabled when external DB unavailable, never re-enabled storage
  • #46239 AUTH_SESSION_ID cookie reuse causes cross-user session contamination on re-authentication authentication
  • #46296 UsersResource.search briefRepresentation started to return user attributes admin/api
  • #46379 Unexpected error when logging out with offline session and external IDP oidc
  • #46459 Operator-built DB config: targetServerType=primary not applied / connection validation not working after master-replica failover (26.5.0) operator
  • #46588 Partial LDAP sync duration does not follow the defined value in user federation ldap
  • #46605 26.5.4 startup regression with many realms: RealmCacheSession.prepareCachedRealm() scans master admin role composites per realm (O(N²)) core
  • #46656 Em-Hyphens in SPI options on cache configuration page docs
  • #46663 JGroups bind port configuration ignored when --cache-embedded-network-bind-port set infinispan
  • #46669 SPIFFE Client assertion throws a NullPointerException if no client is found token-exchange
  • #47079 Do not allow fetching organizations of a member if not a member of the current organization organizations

26.5.5

05 Mar 15:40

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

26.5.4

20 Feb 09:19

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

Enhancements

  • #46090 New key affinity for session ids

Bugs

  • #44488 "Update email" AIA: "Back to Application" URL invokes OIDC callback with missing parameters oidc
  • #45065 Client deletion timeout due to large number of client roles storage
  • #45680 auth_mellon (SAML) authentication fails after upgrade to 26.5.1 (from 26.4.6) saml
  • #45728 Information Disclosure of Client Secret on Unauthenticated Config Endpoint oidc
  • #45874 Disabled organizations still resolve in organization‑aware login flows organizations
  • #45966 KeycloakRealmImport: Realm created in DB but not visible in Admin Console until restart operator
  • #45980 Keycloak cluster with 3 nodes and jdbc-ping stack fails to rejoin after temporary network partition infinispan
  • #46100 Makes Database Query on Every Login Page Load Instead of Using Cache infinispan
  • #46150 Move upgrading note for SAML to 26.5.4 docs
  • #46178 Regression: cannot authenticate in keycloak-admin-client adapter/javascript
  • #46290 Incorrect code used error, leading to "400 / Code already used" during Infinispan state transfers infinispan
  • #46303 JWT Authorization Grant: Always getting “Token was issued too far in the past to be used now” for EntraID issued tokens oidc
  • #46312 io.fabric8:docker-maven-plugin:0.40.3:start failed: Cannot invoke "com.google.gson.JsonElement.isJsonNull()" because the return value of "com.google.gson.JsonObject.get(String)" is null ci

26.5.3

10 Feb 07:30

Choose a tag to compare

Upgrading

Before upgrading refer to the migration guide for a complete list of changes.

All resolved issues

Security fixes

  • #46144 CVE-2026-1609 Disabled users can still obtain tokens via JWT Authorization Grant
  • #46145 CVE-2026-1529 Forged invitation JWT enables cross-organization self-registration
  • #46146 CVE-2026-1486 Logic Bypass in JWT Authorization Grant Allows Authentication via Disabled Identity Providers
  • #46147 CVE-2025-14778 Incorrect ownership checks in /uma-policy/

Enhancements

  • #45892 Upgrade minikube for CI tests operator

Bugs

  • #44379 Node.js admin client does not refresh tokens admin/client-js
  • #45459 k8s multiple restart (oomkilled) in v26.5.0-0 during startup because of RAM dist/quarkus
  • #45662 Increase in startup memory consumption in post 26.5 versions dist/quarkus
  • #45677 Hibernate Validator is enabled by default when not used dist/quarkus
  • #45708 Unpexted value '' in mixed-cluster-compatibility-tests testsuite
  • #45745 mixed-cluster-compatibility-tests fail due to incorrectly masked content in 26.5 branch ci
  • #45755 Broken YAML indentation in operator rolling updates doc docs
  • #45780 Remove fatal log messages from `ConsistentHash`