Commit graph

247 commits

Author SHA1 Message Date
mposolda
466368767b Admin support for sending credential offer by email
closes #46198

Signed-off-by: mposolda <mposolda@gmail.com>
2026-05-27 17:12:57 +02:00
Giuseppe Graziano
2e99d2e965
Migrate Standard token exchange tests (#47516)
Closes #47491
closes #48982 


Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-27 16:33:56 +02:00
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.
Some checks failed
Weblate Sync / Trigger Weblate to pull the latest changes (push) Has been cancelled
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
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
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