chore(xtest): validate e2e against Keycloak 26.4 (DSPX-4190) - #568
chore(xtest): validate e2e against Keycloak 26.4 (DSPX-4190)#568dmihalcik-virtru wants to merge 3 commits into
Conversation
Pin start-up-with-containers to the DSPX-4190 platform commit (adds the bootstrap-ref input) and set bootstrap-ref: DSPX-4190 so CI pulls the 26.4.0 docker-compose.yaml from the branch instead of the frozen pqc-enabled tag (Keycloak 25.0). Interim validation commit — roll back once pqc-enabled is re-pointed to carry the 26.4 bootstrap files.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
) ## What Bump the `start-up-with-containers` pin to `18b8070f` (opentdf/platform#3792) and pass `bootstrap-ref: main` on the `main` platform lane only. ## Why The action overlays `docker-compose.yaml` from `bootstrap-ref`, **independent of `platform-ref`**. That input defaults to the `pqc-enabled` tag, which is still pinned to `keycloak/keycloak:25.0` — a Keycloak that cannot issue DPoP-bound access tokens. So every lane ran KC 25 even though platform `main`'s own compose has been `ghcr.io/opentdf/keycloak-standard:26.4.0` with `KC_FEATURES: dpop` since #3792, and `service/cmd/keycloak_data.yaml` provisions `opentdf-dpop` with `dpop.bound.access.tokens: "true"`. The visible symptom: `test_dpop.py::test_dpop_happy_path_roundtrip` fails for any SDK that checks token binding. The token comes back `typ=Bearer` with no `cnf.jkt`, and the js CLI rejects it: ``` [CRITICAL] DPoP requested but the access token is not bound (missing cnf.jkt) ``` go and java pass only because they don't assert `cnf.jkt`. The other `test_dpop.py` cases already self-skip on `token_type != DPoP`; the SDK-level roundtrips gate on the platform well-known and SDK features, not on IdP capability, so they run and fail. This is what keeps opentdf/web-sdk#939 red. Released platform tags keep the 25.0 bootstrap — they predate the move to standard Keycloak token exchange (opentdf/platform#3754). ## Testing Dispatched against this branch with `platform-ref=main`, `js-ref=refs/pull/939/merge`, `focus-sdk=js` — https://github.com/opentdf/tests/actions/runs/31016132383 — all three lanes green (`go@main`, `java@main`, `js@pull-939`). Confirmed Keycloak 26.4 came up, and these ran rather than skipped: ``` PASSED test_dpop.py::test_dpop_happy_path_roundtrip[small-js@pull-939-js@pull-939-in_focus0] PASSED test_dpop.py::test_dpop_happy_path_roundtrip[small-js@pull-939-java@main-in_focus0] PASSED test_dpop.py::test_dpop_rejects_replayed_jti[small-js@pull-939-in_focus0] PASSED test_dpop.py::test_dpop_rejects_tampered_proof_htu[small-js@pull-939-in_focus0] PASSED test_dpop.py::test_dpop_bearer_scheme_warns_but_accepted_for_dpop_token[small-js@pull-939-in_focus0] ``` The nonce-dependent cases still skip, correctly — `dpop-challenge` is off by default, so `require_nonce` is unset. ## Notes - The new action's input set is a strict superset of the old pin's; no call-site changes beyond `bootstrap-ref`. - `start-additional-kas` is left at `6dd5f649` — it downloads no compose. - Overlaps #568 (DSPX-4190), which took the broader approach of moving every lane to 26.4 via a platform PR branch. This is the narrow slice needed now; #568's remaining checklist (re-point the `pqc-enabled` tag, align `vulnerability.yml`) still stands. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated platform startup workflows to use the Keycloak 26.4 revision. * Adjusted bootstrap selection so the main platform lane uses the main configuration while released tags retain the PQC-enabled configuration. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Dave Mihalcik <dmihalcik@virtru.com>




What
DSPX-4190 — move the e2e fleet onto Keycloak 26.4 (CVE-free; DPoP strictness + standard token-exchange changes). Draft/interim, opened to validate the suite against 26.4.
Why it's not a one-line image bump
start-up-with-containersoverwrites the checked-outdocker-compose.yamlwith one fetched from a frozen ref — previously hardcoded to thepqc-enabledtag (keycloak/keycloak:25.0). So every lane, includingmain, ran 25.0 despite main's compose already being 26.4.0. The companion platform change (opentdf/platform:DSPX-4190) adds abootstrap-refinput to select that ref.Changes
start-up-with-containerstod1081e9(addsbootstrap-ref) and setbootstrap-ref: DSPX-4190, so CI pulls the 26.4.0 compose from the branch. (start-additional-kasunchanged — it downloads no compose.)spec/DSPX-4190.md.Before merge (do not merge as-is)
pqc-enabled(or cut a new tag) to a 26.4 bootstrap commit, then dropbootstrap-refand re-pin the action to a stablemainSHA.test_dpop.pylanes skip unless theopentdf-dpopprovisioning (DSPX-3397) is in theplatform-refcheckout.vulnerability.yml(still on the 25.0 action SHA).