245 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
Šimon Vacek feca053c2e Refactor legacy test suite's ExportImportResource (#48967)
Closes: #48966

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-05-21 09:15:19 +00:00
Šimon Vacek 440f9a90f2 Move the rest of TestingResource methods to a utils-shared helper class (1/2) (#48722)
* Move the rest of TestingResource methods to a utils-shared helper class (1/2)

Closes: #48708

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

* rename runOnServer field

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

* remove realm name from method input

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

---------

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-05-21 05:55:20 +00:00
Giuseppe Graziano a1405663f7 Token introspection now validates audience claim. UserInfo endpoint rejects lightweight access tokens.
Closes #49113

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-20 18:23:06 +02:00
Steven Hawkins 03624df8db fix: simplifying quarkus integration test annotations (#48977)
* fix: simplifying quarkus integration test annotations

closes: #48796

Signed-off-by: Steve Hawkins <shawkins@redhat.com>

* refining quarkus integration tests to use KeycloakDistributionDecorator

Signed-off-by: Steve Hawkins <shawkins@redhat.com>

* implementing review feedback.

KeycloakRunner replaces KeycloakDistributionDecorator

Signed-off-by: Steve Hawkins <shawkins@redhat.com>

---------

Signed-off-by: Steve Hawkins <shawkins@redhat.com>
2026-05-20 07:05:36 -04: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
Yike Gao 4aff9a43ce migrated RequiredActionUpdateProfileTest. Closes #48149 (#48648)
Signed-off-by: Yike Gao <yikegao8@gmail.com>
2026-05-19 11:12:12 +02:00
rmartinc 4cca6f7088 Allow using the parameter in the consent text for dynamic scopes
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
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
vramik e743c350c4 Add social button support to test framework page objects
Closes #48932

Signed-off-by: vramik <vramik@redhat.com>
2026-05-12 12:58:39 -03:00
mposolda 538abc80f5 Export/import support for credentials
closes #48679

Signed-off-by: mposolda <mposolda@gmail.com>
2026-05-12 11:54:57 +02: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
vramik e1329516d5 Introduce ORGANIZATIONS resource type in Fine-Grained Admin Permissions
Closes #47284

Signed-off-by: vramik <vramik@redhat.com>
2026-04-29 11:10:05 -03: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
Pedro Ruivo 939775766d Fix Cluster Compatibility Tests for 26.6
Closes #47860

Signed-off-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
Co-authored-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
2026-04-08 20:57:17 +02:00
vramik a46b9453ec Keycloak user enumeration via identity-first login
Closes #47619

Signed-off-by: vramik <vramik@redhat.com>
2026-04-08 07:43:16 -03:00
Ricardo Martin f2c7c673df Add SAML url attributes to the SecureClientUrisPatternExecutor (#47514)
Closes #46745


Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-03-27 14:53:34 +01:00
Simon Levermann f4225b4f9b Introduce traceId to freemarker attributes
Closes #44090
Closes #34435

Signed-off-by: Simon Levermann <github@simon.slevermann.de>
2026-03-26 17:42:32 +01: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
Lukas Hanusovsky e351d5949b Test Framework - support for multiple WebDriver instances. (#46982)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-03-16 11:54:19 +00: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
Pedro Ruivo 33ff9f1b71 Check the Unicode setup of the database on startup
Closes #46557

Signed-off-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Pedro Ruivo <1492066+pruivo@users.noreply.github.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-03-01 14:15:44 +01:00
Lukas Hanusovsky 4c656097a8 Keycloak Test Framework - tests testing framework (#46610)
Signed-off-by: Lukas Hanusovsky <lhanusov@redhat.com>
2026-02-27 06:29:18 +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