Commit graph

180 commits

Author SHA1 Message Date
Martin Bartoš
629e86afd2
Disable the Account UI when the ACCOUNT feature is disabled (#48807)
Closes #48806

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-05-25 15:37:15 +02:00
Lukas Hanusovsky
69182286ef
Refactor AssertEvents expect() and related methods to use EventAssertion equivalents. (#48752)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-05-20 07:18:03 +02:00
rmartinc
4cca6f7088 Allow using the parameter in the consent text for dynamic scopes
Some checks are pending
Weblate Sync / Trigger Weblate to pull the latest changes (push) Waiting to run
Closes #9915

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-14 10:30:23 -03:00
Michal Vavřík
fe319271c8
chore(quarkus): avoid transitive kotlinx-metadata-jvm deployment-only dep (#48953)
* Closes: https://github.com/keycloak/keycloak/issues/48952

Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>
2026-05-13 19:30:55 +02:00
Stian Thorgersen
a676b7576a
Fix test framework server startup not configurable
Some checks are pending
Weblate Sync / Trigger Weblate to pull the latest changes (push) Waiting to run
Closes #48920

Signed-off-by: stianst <stianst@gmail.com>
2026-05-12 23:20:23 +02:00
Thomas Darimont
a2275c1899 Add Shared Signals Framework Transmitter capability (#48901)
Adds Shared Signals Framework support to Keycloak in the **SSF Transmitter** role: Keycloak signs Security Event Tokens (SETs, RFC 8417) describing realm/user/session/credential events and delivers them to OAuth clients
registered as **SSF Receivers**, either by HTTP PUSH (RFC 8935) or HTTP POLL (RFC 8936).

Targets the OpenID Shared Signals Framework 1.0 (Final) specification plus the CAEP Interoperability Profile 1.0. Ships the legacy SSE CAEP profile alongside for Apple Business Manager / Apple School Manager interop, since Apple device-fleet enrolment is a concrete drive-use case.

Gated behind \`Profile.Feature.SSF\` experimental, opt-in.

Issue #43614 originally proposed SSF *Receiver* support (Keycloak ingesting SETs from upstream IdPs / risk engines). After exploring both sides, we're shipping the **Transmitter** first (see #48254) because it covers the strongest community asks (federate Keycloak events to downstream SaaS, Apple device fleet revoke flow) and lets us validate the SSF data-plane against real receivers before designing the harder "action mapping" question on the Receiver side. Receiver support remains on the roadmap and is tracked separately via #43614.

**In:**
- Compliance with SSF 1.0, CAEP 1.0, RISC 1.0, RFC 8935, RFC 8936, RFC 9493, RFC 8417
- SSF Transmitter support (Keycloak Realm can act as a SSF Transmitter)
- SSF Stream management (CRUD, status, verification)
- SSF Subjects management  (subjects)
- SET delivery via HTTP PUSH (RFC 8935) and HTTP POLL (RFC 8936) with  POLL in a return-immediately form
- SSF events temporarily stored in durable outbox with cluster-aware drainer and exponential backoff
- SSF Receivers managed as OIDC Clients with client credentials grant or auth code grant (currently only one stream per client)
- Support for SSF Stream, CAEP 1.0 and RISC 1.0  events (custom events via SPI)
- CAEP credential-change / session-revoked / (device-compliance-change) event mapping from native Keycloak events
- Support for RFC 9493 Subject Identifiers for Security Event Tokens
- Support for SSF Receiver subject event subscription with subject selection (per-user / per-orgssf.notify.<clientId>attribute, support fordefault_subjectspolicy (ALL, NONE))
- Support for Synthetic event emittance via REST endpoint for non-Keycloak-native event sources (external IAM solution)
- Per-receiver "Emit-only events" gate to suppress auto-emit per event type per receiver
- Support for legacy SSE CAEP profile for Apple Business Manager / Apple School Manager interop (verified)
- Per-realm SSF admin REST + Admin UI for SSF-enabled clients (Receiver / Stream / Subjects / Events)
- Prometheus metrics (dispatcher, drainer, poll, verification, outbox depth, delivery metrics)

**Out (tracked as separate follow-up issues):**
- SSF Receiver role for Keycloak (ingestion of SETs)
- POLL long-polling (\`returnImmediately=false\` honoured)
- Dedicated SSF signing key (separate from realm OIDC signing key)
- Chunked HELD release for very large backlogs
- Performance characterization + security review
- Formal interop matrix (caep.dev, ABM)

- [X] All code gated behind \`Profile.Feature.SSF\` (experimental, off by default)
- [X] Per-realm \`ssf.transmitterEnabled\` toggle; per-client \`ssf.enabled\` toggle
- [X] SSF event listener registered as global (not user-toggleable per realm)
- [X] Receiver-facing endpoints conformant with SSF 1.0
- [X] CAEP credential-change / session-revoked / device-compliance mapping pass interop testing against \`caep.dev\`
- [X] SSE CAEP profile narrowed shape works with Apple Business Manager
- [X] Integration test coverage for the dispatch / outbox / push / poll pipeline (100+ tests)
- [X] Prometheus metrics exposed under \`keycloak_ssf_*\`
- [X] Design notes published

Fixes #48901

This PR was partially co-authored with Claude AI

Signed-off-by: Thomas Darimont <thomas.darimont@googlemail.com>
2026-05-12 13:00:19 -03:00
Lukas Hanusovsky
ba108b0c5f
Rewrite AssertEvents expectLogout and expectLogoutError into EventAssertion methods. (#48638)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-05-06 12:53:01 +02:00
Lukas Hanusovsky
4f47022641
Rewrite AssertEvents expectLoginEvent to EventAssertion. (#48467)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-05-04 11:26:47 +02:00
Stian Thorgersen
e1adb5f2ce
Refactor builders in testsuite part 2 (#48454)
Closes #48452

Signed-off-by: stianst <stianst@gmail.com>
2026-04-28 10:19:41 +02:00
Niko Köbler
e5ca2a6709
Enable to set mediation property for WebAuthn passwordless authentication (#46960)
possible values: conditional, optional, required, silent
conditional remains the default to not break the current behavior

when optional or required and the user dismissed the modal, it will stay hidden for this auth-session, can still be opened by button

adjusted all related resources, like JS files (also consolidated duplicated logic), Java classes and freemarker template

tests extended

passkey documentation extended/updated

closes #46959

Signed-off-by: Niko Köbler <niko@n-k.de>
2026-04-27 10:07:09 +02:00
Stian Thorgersen
17a3738592
Refactor builders in testsuite part 1 (#48315)
Refactor builders in testsuite part 1

Closes #48323

Signed-off-by: stianst <stianst@gmail.com>
2026-04-23 12:35:16 +02:00
Marek Posolda
72e0c26a35
Update password after email verification during registration of users (#47538)
closes #45568

Signed-off-by: mposolda <mposolda@gmail.com>
2026-04-17 15:15:48 +02:00
Ricardo Martin
95cdee91aa
Pass and use rememberMe option in passkeys authenticators
Closes #45104
2026-04-15 10:28:56 -03:00
Giuseppe Graziano
865edcea36 Client policies for identity brokering api
Closes #46585

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-03-24 19:00:51 +01:00
Thomas Diesler
d38ee4c110 [OID4VCI] Migrate preauth offer tests to separate package
Signed-off-by: Thomas Diesler <tdiesler@proton.me>
2026-03-24 09:11:04 +01:00
Pedro Ruivo
c93b6a7e6c
Asynchronous server initialization
Closes #47187

Signed-off-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Signed-off-by: Pedro Ruivo <pruivo@users.noreply.github.com>
Co-authored-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Steven Hawkins <shawkins@redhat.com>
2026-03-19 21:23:46 +01:00
Ricardo Martin
3c7582f318
Broker token API for saml (#47087)
Closes #46589


Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-03-17 18:29:48 +01:00
Marek Posolda
c4a630da6d
[OID4VCI] User self-issued credential: Issuance initiated from web po… (#46327)
closes #46196

Signed-off-by: mposolda <mposolda@gmail.com>
2026-03-17 08:41:16 +01:00
Giuseppe Graziano
5db69aec7d [OID4VCI] Migrate OID4VCJWTIssuerEndpointTest
Closes #46925

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-03-16 17:44:31 +01:00
Michal Vavřík
bce957f9a1
fix(test-framework): exec condition for DisabledForServers (#47165)
* https://github.com/keycloak/keycloak/issues/47164

Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>
2026-03-16 09:15:01 +01:00
Šimon Vacek
5218d3f15a
added user cleanup for managed framework user (#47068)
Closes: #44697

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-03-13 12:42:45 +01:00
Thomas Diesler
6efb394398
[OID4VCI] Add support for authorization_code grant - Part4 (#46950)
closes #47100


Signed-off-by: Thomas Diesler <tdiesler@proton.me>
Signed-off-by: mposolda <mposolda@gmail.com>
Co-authored-by: mposolda <mposolda@gmail.com>
2026-03-12 16:09:42 +01:00
Lukas Hanusovsky
e28d705a44
Updating remaing incorrect events assertions to follow the new test framework. (#46913)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-03-12 09:41:11 +01:00
Stian Thorgersen
f0fcffe3e3
Add debug helper utility to the test framework
Closes #47011

Signed-off-by: stianst <stianst@gmail.com>
2026-03-11 09:29:43 +00:00
Giuseppe Graziano
92c9faca67
Persist federated token in user session (#46803)
Closes #46574

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-03-10 15:06:40 +01:00
Marek Posolda
7516d8035f
Migrate RefreshTokenTest to new testsuite (#46886)
closes #46612


Signed-off-by: mposolda <mposolda@gmail.com>
2026-03-10 08:57:49 +01:00
Pedro Igor
63bf73362b
Enforcing expiration and issued for claims when validating ID tokens as claim tokens
Closes #46717
Closes #46716

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-03-09 21:18:31 +01:00
Lukas Hanusovsky
27a645a121
Updating Test Framework Core module description. (#46894)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-03-05 11:48:21 +00:00
Hammad Khan
edeb3670e7
Fix @TestSetup method ordering with inheritance (#46686)
* Fix @TestSetup method ordering with inheritance

ReflectionUtils.listMethods() had two bugs when class inheritance was
involved:

1. Subclass methods were added before superclass methods, resulting in
   wrong execution order. Expected behavior is superclass first, matching
   standard Java inheritance semantics.

2. When a subclass overrides a superclass method annotated with
   @TestSetup, both methods were collected causing the subclass method
   to execute twice instead of only the override running once.

The fix builds the class hierarchy top-down (superclass first) and skips
superclass methods that are overridden by a subclass method with the
same name and parameter types.

Closes #46667

Signed-off-by: hammadxcm <hammadkhanxcm@gmail.com>

* Small refactoring to add when not already added, instead of adding/remove

Signed-off-by: stianst <stianst@gmail.com>

---------

Signed-off-by: hammadxcm <hammadkhanxcm@gmail.com>
Signed-off-by: stianst <stianst@gmail.com>
Co-authored-by: stianst <stianst@gmail.com>
2026-03-05 08:17:17 +01:00
Pedro Igor
884e46d125
Enable and disable SCIM API to a realm through the administration console
Closes #46755

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-03-03 10:16:30 +01:00
Šimon Vacek
c072bacf5e
Add docs for framework hot deployment & fix (#46568)
Closes: #46552

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-02-25 08:04:41 +01:00
Ruchika Jha
9ec61bfb52
Added the shutdown delay and shutdown timeout for the testcases to default options
Closes #46337

Signed-off-by: Ruchika <ruchika.jha1@ibm.com>
2026-02-24 14:47:04 +01:00
Lukas Hanusovsky
cbfcd07c62
[Test Framework] Fix of AdminClientSupplier for ManagedRealm. (#46287)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-02-24 10:48:27 +00:00
Ricardo Martin
e7ac4ef3f7
Move test class for persistent CIMD to the new test-suite
Closes #46438

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-02-24 11:40:26 +01:00
Pedro Igor
3e3a7befd1
Initial code for SCIM core and testsuite (#45978)
Closes #45712

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-02-23 18:22:25 +01:00
Šimon Vacek
46b1899178
Hot deploy custom providers from module to test server (#45556)
* Hot deploy provider module

Closes #34188

Signed-off-by: Simon Vacek <simonvacky@email.cz>

* fix for external projects and add deployCurrentProject

Signed-off-by: Simon Vacek <simonvacky@email.cz>

* address review comments

Signed-off-by: Simon Vacek <simonvacky@email.cz>

* improve dependency compatibility check

Signed-off-by: Simon Vacek <simonvacky@email.cz>

---------

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-02-23 08:01:03 +01:00
Stian Thorgersen
337e94d5a4
Add JavaDoc for most important parts of the new test framework
Closes #46170

Signed-off-by: stianst <stianst@gmail.com>
Signed-off-by: Stian Thorgersen <stianst@gmail.com>
Co-authored-by: Šimon Vacek <86605314+vaceksimon@users.noreply.github.com>
2026-02-20 11:17:09 +01:00
Stian Thorgersen
ddaec23a29
Fix NPE with GitHubActionReport if running test on actions without git checkout
Closes #46322

Signed-off-by: stianst <stianst@gmail.com>
2026-02-16 13:01:40 +01:00
Lukas Hanusovsky
8839c831b9
[Test Framework] testcontainers dependency refactor. (#46131)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-02-11 10:07:12 +00:00
Stian Thorgersen
fc150d1bca
Add support for detecting slow test classes
Closes #46166

Signed-off-by: stianst <stianst@gmail.com>
2026-02-10 20:54:14 +01:00
Stian Thorgersen
675c54f212
Support injection in realm, client and user configurations
Closes #46128

Signed-off-by: stianst <stianst@gmail.com>
2026-02-10 20:53:59 +01:00
Stian Thorgersen
3bcb6dde58
Fix NPE in test framework registry (#46163)
Closes #46162

Signed-off-by: stianst <stianst@gmail.com>
2026-02-10 20:53:14 +01:00
Lukas Hanusovsky
8d70b91ead
[Test Framework] Removing JUnit4 dependency. (#46174)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-02-10 13:25:06 +00:00
Stian Thorgersen
d10fbde0c8
Distribution server sometimes uses wrong pid for started Keycloak server
Closes #46110

Signed-off-by: stianst <stianst@gmail.com>
2026-02-09 10:41:09 +00:00
Šimon Vacek
20e78e468d
Test framework validations and error messages (#45869)
Closes #38163

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-02-09 06:51:31 +01:00
Stian Thorgersen
c7c27a031e
Add support for setup and cleanup for a test
Closes #46071

Signed-off-by: stianst <stianst@gmail.com>
2026-02-06 15:59:26 +01:00
Stian Thorgersen
4ff023467d
Add GitHub Action summary support to new test framework
Closes #46045

Signed-off-by: stianst <stianst@gmail.com>
2026-02-06 13:39:43 +01:00
Lukas Hanusovsky
a21a53667e
Creating user with roles/clientRoles via UserSupplier is not supported. (#46070)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-02-06 08:55:19 +00:00
Stian Thorgersen
ea4c8f65b6
Review realm cleanup in test framework
Closes #45973

Signed-off-by: stianst <stianst@gmail.com>
2026-02-04 18:03:15 +01:00
Šimon Vacek
14fc381eaa
Registry extends AutoCloseable directly (#45887)
Closes #45886

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-02-02 07:37:31 +01:00