v3.7.32: Keycloak 26.7.1 → 26.7.3 (20 CVE fixes) + retire legacy p1-sso theme + fix p1-sso-v2 CSS
Summary
Two scopes bundled into 3.7.32:
1. Keycloak 26.7.1 → 26.7.3 patch bump (20 CVE fixes). Realigns the plugin's compileOnly SPI pin with the runtime version P1 environments already moved to via configmap. Quarkus unchanged at 3.33.3.1 (26.7.3 bundles the same Quarkus). No plugin Java code changes required for the KC bump.
2. Retire the legacy p1-sso theme + fix a real p1-sso-v2 CSS bug. Delete the original p1-sso theme from the plugin JAR (superseded years ago by p1-sso-v2 in this repo and p1-sso-v3/v4 in the themes repo). Fix invalid trailing commas in both @font-face src: declarations in p1-sso-v2/custom-resources/css/new-ui.css. Update documentation drift where five doc files described theme mounts + a nonexistent p1-sso-v3 directory in this repo.
The two scopes are independent but co-shipped to reduce release churn — theme changes have zero effect on running realms (theme selection is DB-persisted and served by the init container image, not the plugin JAR).
Files bumped (KC 26.7.3)
keycloakVersion26.7.1 → 26.7.3 inp1-keycloak-plugin/build.gradlerootProjectVersion3.7.31 → 3.7.32 ingradle.properties- Docker dev image 26.7.1 → 26.7.3 in
docker-dev/docker-compose.yml - COMPATIBILITY_MATRIX row for 3.7.32
Files changed (theme retirement + bug fix + doc cleanup)
- Deleted:
p1-keycloak-plugin/src/main/resources/theme/p1-sso/(30 files, 2,459 lines) - Updated:
p1-keycloak-plugin/src/main/resources/META-INF/keycloak-themes.json— removedp1-ssoentry, keptp1-sso-v2 - Fixed CSS bug:
p1-keycloak-plugin/src/main/resources/theme/p1-sso-v2/custom-resources/css/new-ui.css— removed trailing commas afterformat("truetype")in both@font-face src:declarations (invalid per CSS spec; browsers silently ignored the malformed entry, but Sonar rulecss:S8775correctly rejected it) - Sonar config cleanup: dropped the now-dead
css:S7924suppression on**/theme/p1-sso/**/*.cssfromsonar-project.properties+sonar-project-dev.properties. Multicriteria list reduced toe1,e2. - Doc drift fixes:
docs/DOCKER_DEV_ARCHITECTURE.md,docs/QUICK_START.md,docs/DEVELOPER_ONBOARDING.md,docker-dev/README.md,README.md— corrected theme mount paths and removed references to ap1-sso-v3directory that has never existed in this repo (v3/v4 live in the themes repo as theinternal-themesimage)
Selected KC 26.7.3 CVEs (full list in release notes)
OIDC/auth path (most relevant to P1 SSO):
- CVE-2026-16089 — OIDC authorization codes can be retargeted to another client session
- CVE-2026-16093 — Required signed-JWT assertion policy can be bypassed with unsigned assertion headers
- CVE-2026-18209 — Incomplete fix for
redirect_uriOIDC response-parameter injection: forbidden-parameter check inspects only query string, not URL fragment - CVE-2026-18218 — Client not-before revocation ignored when realm not-before is older but nonzero
- CVE-2026-79652 —
jwt-bearerauthorization grant does not enforceconsentRequired
Admin/RBAC/FGAP:
- CVE-2026-16072 — Organization managers can create managed members through stored registration links without
manage-users - CVE-2026-16105 — Missing per-role authorization on
RoleContainerResourcecomposite endpoints - CVE-2026-16108 — Realm default-group reads disclose hidden groups under FGAP v2
- CVE-2026-16106 — Delegated admin can remove privileged child roles via role-composite deletion
- CVE-2026-17059 —
GET /roles/{role}/usersreturns user PII without per-user view filter - CVE-2026-18571 — FGAP v2: group assignment bypass during user creation
- CVE-2026-18201 — Generic IdP creation can bind brokers to organizations without
manage-organizations - CVE-2026-16104 — Authenticator config surfaces expose raw reCAPTCHA secrets
Token exchange / external IdP:
- CVE-2026-18215 — Microsoft external access-token exchange bypasses configured tenant
- CVE-2026-18214 — Google external access-token exchange bypasses hosted-domain restriction
- CVE-2026-18570 — Full-scope-disabled client policy validation bypassed by omitting
fullScopeAllowed - CVE-2026-18572 — UMA claim token can override the authorization time-policy clock
- CVE-2026-18573 — Client access-type condition evaluates updates against old client type
Other:
- CVE-2026-35563 — LDAP client TLS hostname verification (LDAP client 2.1.7) — relevant to Scenario B customers federating AD
- CVE-2026-19729 — Incomplete fix for CVE-2026-9083: relative path traversal enables filesystem probing in 26.6.4
Relevant logs
Build + test on this branch:
$ ./gradlew :p1-keycloak-plugin:clean :p1-keycloak-plugin:build
BUILD SUCCESSFUL
Total tests: 1427 skipped: 8 failed: 0 errors: 0Built JAR ships only p1-sso-v2:
$ unzip -l p1-keycloak-plugin-3.7.32.jar | awk '/theme\/[^\/]+\/$/'
0 2026-08-31 21:56 theme/p1-sso-v2/Parsson exclusion (from 3.7.29) preserved:
$ jar tf p1-keycloak-plugin-3.7.32.jar | grep -iE "^jakarta/json|^org/eclipse/parsson"
(empty — still excluded)Linked Issue
Follows upstream KC 26.7.3 release: https://github.com/keycloak/keycloak/releases/tag/26.7.3
Upgrade Notices
- Drop-in for KC bump. Existing envs on 3.7.31 can bump to 3.7.32 by changing the plugin image tag only — no config or realm changes required for the KC portion.
- Theme retirement — breaking for anyone using
p1-sso: if any downstream deployment still references thep1-ssotheme by name, it must switch top1-sso-v2(or ap1-sso-v3/v4from the themes repo). Running realms select their theme from the database and are served by the init-container image, so P1-managed environments (which usep1-sso-v4) are unaffected. External plugin consumers onp1-sso-v2are unaffected. Only downstream consumers still on the originalp1-ssoare impacted. - External-manifests follow-up required:
apps/backup_restore/restore/base/resources/sql.shin the external-manifests repo writesaccount_theme = 'p1-sso'(alsoadmin_theme,login_theme) into restored realms. After this release, that script must be updated to'p1-sso-v2'— otherwise a restore would point restored realms at a theme the JAR no longer provides. Tracked separately; fix belongs in the external-manifests repo. - Plugin remains backwards-compatible with KC 26.7.1 and 26.7.2 (patch releases don't change SPI surface).
- OWASP dependency-check expected clean (only KC version changed; both KC and its Quarkus come from Ironbank sources).