Skip to content

chore(xtest): validate e2e against Keycloak 26.4 (DSPX-4190) - #568

Draft
dmihalcik-virtru wants to merge 3 commits into
mainfrom
DSPX-4190
Draft

chore(xtest): validate e2e against Keycloak 26.4 (DSPX-4190)#568
dmihalcik-virtru wants to merge 3 commits into
mainfrom
DSPX-4190

Conversation

@dmihalcik-virtru

@dmihalcik-virtru dmihalcik-virtru commented Jul 27, 2026

Copy link
Copy Markdown
Member

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-containers overwrites the checked-out docker-compose.yaml with one fetched from a frozen ref — previously hardcoded to the pqc-enabled tag (keycloak/keycloak:25.0). So every lane, including main, ran 25.0 despite main's compose already being 26.4.0. The companion platform change (opentdf/platform:DSPX-4190) adds a bootstrap-ref input to select that ref.

Changes

  • Pin start-up-with-containers to d1081e9 (adds bootstrap-ref) and set bootstrap-ref: DSPX-4190, so CI pulls the 26.4.0 compose from the branch. (start-additional-kas unchanged — it downloads no compose.)
  • Flesh out spec/DSPX-4190.md.

Before merge (do not merge as-is)

  • Re-point pqc-enabled (or cut a new tag) to a 26.4 bootstrap commit, then drop bootstrap-ref and re-pin the action to a stable main SHA.
  • test_dpop.py lanes skip unless the opentdf-dpop provisioning (DSPX-3397) is in the platform-ref checkout.
  • Align vulnerability.yml (still on the 25.0 action SHA).

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.
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f4e67ccc-16f8-4e7d-837f-8e59ec916ee3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch DSPX-4190

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@dmihalcik-virtru dmihalcik-virtru changed the title DSPX-4190: validate e2e against Keycloak 26.4 chore(xtest): validate e2e against Keycloak 26.4 (DSPX-4190) Jul 27, 2026
dmihalcik-virtru added a commit that referenced this pull request Aug 6, 2026
)

## 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant