31010 Commits

Author SHA1 Message Date
Thomas Diesler ce12c7184c [OID4VCI] Add a client policy to require a credential offer (#47286)
closes #44317


Signed-off-by: Thomas Diesler <tdiesler@proton.me>
2026-05-14 17:04:36 +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
Umberto Toniolo bc5444d082 Fix NPE in OrganizationGroupMembershipMapper when no organization scope is requested
OrganizationGroupMembershipMapper.resolveFromRequestedScopes() calls
OrganizationScope.valueOfScope() which returns null when the request does
not include an organization scope. The method then calls
resolveOrganizations() on the null reference, causing a NullPointerException.

This mirrors the null guard already present in OrganizationMembershipMapper.

Closes #48834

Signed-off-by: Umberto Toniolo <amountainram@gmail.com>
2026-05-14 10:29:56 -03:00
Václav Muzikář b817355646 Override org.postgresql:postgresql version (#48991)
Closes #48802

Signed-off-by: Václav Muzikář <vmuzikar@ibm.com>
2026-05-14 14:50:16 +02: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>
nightly
2026-05-13 19:30:55 +02:00
Steven Hawkins 6b0f96a456 fix: adding aot compiliation to quarkus tests (#48891)
* fix: adding aot compiliation to quarkus tests

closes: #48846

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

* Update quarkus/tests/junit5/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java

Co-authored-by: Michal Vavřík <43821672+michalvavrik@users.noreply.github.com>
Signed-off-by: Steven Hawkins <shawkins@redhat.com>

* Update quarkus/tests/junit5/src/main/java/org/keycloak/it/utils/RawKeycloakDistribution.java

Co-authored-by: Pedro Ruivo <pruivo@users.noreply.github.com>
Signed-off-by: Steven Hawkins <shawkins@redhat.com>

---------

Signed-off-by: Steve Hawkins <shawkins@redhat.com>
Signed-off-by: Steven Hawkins <shawkins@redhat.com>
Co-authored-by: Michal Vavřík <43821672+michalvavrik@users.noreply.github.com>
Co-authored-by: Pedro Ruivo <pruivo@users.noreply.github.com>
2026-05-13 18:47:54 +02:00
Martin Bartoš b49a51bfd3 Dynamic scopes: requested scopes get mixed up between token requests (#48955)
Closes #12223

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-05-13 16:44:28 +02:00
Steven Hawkins 1f0ff55b71 fix: refining startup, and adding a log on async start error (#48733)
closes: #48438

Signed-off-by: Steve Hawkins <shawkins@redhat.com>
2026-05-13 14:41:38 +00:00
Pedro Hos 5ccb91bd2c 'Not username' and 'Not email' options when creating/changing a password, should ignore letter case when comparing password to email or to username (#22804)
Signed-off-by: Pedro Henrique Silva <pesilva@redhat.com>
2026-05-13 16:32:37 +02:00
Giuseppe Graziano 3f26004e32 verifiable credential in account console (#48940)
Closes #48576


Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-13 14:52:11 +02:00
mposolda 45827bef1c [OID4VCI] Test in OID4VCActionTest for the correct client scenarios. Handle scenarios for invalid or disabled clients
closes #48886

Signed-off-by: mposolda <mposolda@gmail.com>
2026-05-13 12:59:59 +02:00
Ricardo Martin 47426fc893 Fix lint issues in the admin console (#48950)
Closes #48949

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-13 12:01:07 +02:00
Peter Skopek 480c730efb Mention SHA1 is deprecated in the documentation
Closes #40706

Signed-off-by: Peter Skopek <peter.skopek@ibm.com>
2026-05-13 10:58:36 +02:00
Šimon Vacek e52ea63766 Refactor legacy test suite's TimeOffset (#48756)
* Create fake timeoffset object

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

* Remove AbstractKeycloakTest#invokeTimeOffset

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

* Remove TestinResource#setTimeOffset & #getTimeOffSet

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

* Remove AbstractKeycloakTest#setTimeOffset & getTimeOffset

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

---------

Signed-off-by: Simon Vacek <simonvacky@email.cz>
2026-05-13 06:53:32 +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
Ricardo Martin 1a8af63df0 Ignore dynamic scopes when feature is not enabled
Closes #47341

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-12 23:19:49 +02:00
Martin Bartoš 361679fede Missing locale keys in Organization Membership protocol mapper
Closes #48917

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-05-12 23:16:19 +02:00
vramik 97d1f46038 Migrate OrganizationTest
Closes #48922

Signed-off-by: vramik <vramik@redhat.com>
2026-05-12 16:22:12 -03:00
Peter Skopek a3cac62f18 Migrate OID4VCJWTIssuerEndpointDisabledTest and OID4VCSdJwtIssuingEndpointDisabledTest
Closes #48743

Signed-off-by: Peter Skopek <peter.skopek@ibm.com>
2026-05-12 19:18:23 +02:00
Peter Skopek 0cb7046dc2 Migrate JwtCredentialSignerTest, SdJwtCredentialSignerTest
Closes #48543

Signed-off-by: Peter Skopek <peter.skopek@ibm.com>
2026-05-12 19:16: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
Michal Vavřík 9a4111b4c5 refactor(quarkus it): skip realm bootstrap for faster Quarkus ITs (#48809)
* Closes: https://github.com/keycloak/keycloak/issues/48808

Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>
2026-05-12 16:39:19 +02:00
Gilvan Filho 7e10133bbc Documents the operator's support for TLS re-encryption. (#47565)
* documents the operator's support for TLS re-encryption.

closes #20128

Signed-off-by: Gilvan Filho <gilvan.sfilho@gmail.com>

* Update docs/guides/operator/basic-deployment.adoc

Co-authored-by: Steven Hawkins <shawkins@redhat.com>
Signed-off-by: Gilvan Filho <gilvan.sfilho@gmail.com>

* Apply suggestions from code review

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Gilvan Filho <gilvan.sfilho@gmail.com>

* Moving updated text to a callout

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>

---------

Signed-off-by: Gilvan Filho <gilvan.sfilho@gmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Steven Hawkins <shawkins@redhat.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-05-12 09:30:16 -04:00
Giuseppe Graziano 868db724f5 remove oid4vc protocol from create client form
Closes #46853

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-12 15:22:49 +02:00
rmartinc 62a304b1f0 Add dbus-java as a common dependency
Closes #47294

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-12 10:17:21 -03:00
rmartinc 993022abe2 Upgrade dbus-java to 5.2.0
Closes #47294

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-12 10:17:21 -03:00
Oleksandr Bilko 5c0e8e1590 Update Ukrainian translations and add language maintainers (#48884)
Signed-off-by: bilkoua <git@bil.co.ua>
2026-05-12 13:06:22 +02:00
Giuseppe Graziano 2a9dadefce verifiable credential tab in admin ui
Closes #48575

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-12 12:06:55 +02:00
Jean-Francois Denise 37601ac438 Upgrade to WildFly 39.0.1.Final, allow for usage of Galleon family
Signed-off-by: Jean-Francois Denise <jfdenise@gmail.com>
2026-05-12 12:00:03 +02:00
Jean-Francois Denise a1f59f0ecd SAML WildFly adapter, impact of the WildFly catalog
Signed-off-by: Jean-Francois Denise <jdenise@redhat.com>
2026-05-12 12:00:03 +02: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
Martin Bartoš 1e99746a68 Unhandled NPE with alg:none JWT in Bearer Authentication (#48798)
* Unhandled NPE with alg:none JWT in Bearer Authentication

Closes #48744

Signed-off-by: Martin Bartoš <mabartos@redhat.com>

* Update test to create programatically token with alg:none

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
Co-authored-by: Ricardo Martin <rmartinc@redhat.com>

---------

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
Co-authored-by: Ricardo Martin <rmartinc@redhat.com>
2026-05-12 09:49:36 +02:00
Ricardo Martin 1cec184455 Do not allow wildcards in the hostname for Valid Redirect Address (#48793)
Closes #48430

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-12 09:46:21 +02:00
Pierluigi Lenoci d896684126 Enable @typescript-eslint/no-unnecessary-condition ESLint rule (#48218)
Enable the rule (previously "off") and fix all violations across the JS
workspace. The core change makes RealmContext.realmRepresentation
non-optional — guarded by the existing KeycloakSpinner in the provider —
allowing ~30 downstream consumers to drop redundant optional chains.

Where TypeScript types declare a value as non-nullable but runtime
behaviour can still produce undefined/null (API responses, react-hook-form
dynamic values, route params present on one route but not another, array
index access, DOM queries), the existing guards are preserved with
eslint-disable-next-line comments explaining the rationale.

Additional fixes surfaced during this work:
- PermissionConfigurationDetails: fix spinner blocking the "create
  permission" form by distinguishing "loading" (null) from "new" ({})
- ResourceType: restore resourceIds?.some() guard — form.getValues
  returns undefined when the field has no default value
- clients.ts createOrUpdatePolicy: narrow catch to 404 NetworkError
  only instead of swallowing all errors

Closes #17770

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
2026-05-12 09:42:52 +02:00
Mohammed Elbagoury 77bf9a1053 Resolve realm display name localization placeholders in TOTP issuer name (#48700)
* Resolve realm display name localization placeholders in TOTP issuer name

Resolve the realm display name before it is used as the issuer name when configuring TOTP credentials. This allows values that use localization placeholder syntax (e.g., ${realm.displayName}) to be resolved using the LOGIN theme messages and the user’s resolved locale, so authenticator applications show the localized display name instead of the raw placeholder.

Fixes #48680

Signed-off-by: Mohammed Elbagoury <m.a.bagoury@gmail.com>

* Cleanup the TotpUtils + add deprecation

Signed-off-by: Martin Bartoš <mabartos@redhat.com>

---------

Signed-off-by: Mohammed Elbagoury <m.a.bagoury@gmail.com>
Signed-off-by: Martin Bartoš <mabartos@redhat.com>
Co-authored-by: Martin Bartoš <mabartos@redhat.com>
2026-05-12 09:06:07 +02:00
Marek Posolda 82c809c7b4 Typo in ClientAdapter.isFrontchannelLogout()
closes #48432

Signed-off-by: mposolda <mposolda@gmail.com>
2026-05-12 04:38:36 +02:00
Tomohiko Ozawa 8366803144 Fix save button not enabled when name is pasted on "Create organization" page (#48883)
Signed-off-by: Tomohiko Ozawa <kota65535@gmail.com>
2026-05-11 14:15:43 -04:00
Michal Vavřík 295b40119f chore(gh ci): drop Quarkus IT container runs (#48664)
* Closes: https://github.com/keycloak/keycloak/issues/48663

Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>
2026-05-11 15:29:55 +00:00
Martin Bartoš 9d1e562f03 Update WebAuthn Metadata service and show icons (#48551)
* Update WebAuthn Metadata service and show icons

Closes #48539
Closes #48540

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
Co-authored-by: rmartinc <rmartinc@redhat.com>

* Revert back the transport type for providerId-less authenticators

Signed-off-by: Martin Bartoš <mabartos@redhat.com>

---------

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
Co-authored-by: rmartinc <rmartinc@redhat.com>
2026-05-11 17:15:38 +02:00
Stian Thorgersen 38600730a4 Unify mail in old and new testsuites (#48785)
Closes #48784

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

# Conflicts:
#	testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/ssl/TrustStoreEmailTest.java
2026-05-11 15:20:14 +02:00
Ryan Emerson 81af44c0e9 Allow Token Exchange of sender constrained tokens issued for the
original client

Closes #47314

Signed-off-by: Ryan Emerson <remerson@ibm.com>
2026-05-11 13:47:22 +02:00
Jon Koops 087e03b0da Add OAuth 2.0 compliant redirect URI validation
Enforce RFC 6749 Section 3.1.2 redirect URI rules (no fragments, no wildcards) via a new "OAuth 2.0 Compliant" client policy flag. This is less strict than the existing OAuth 2.1 flag, which additionally bans localhost and requires HTTPS.

Also fixes the "complient" typo in the existing OAuth 2.1 field and method names.

Closes #41164

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-05-11 13:42:21 +02:00
vramik bdd4860502 Prevent setting different than default decisionStrategy for FGAP
Closes #48749

Signed-off-by: vramik <vramik@redhat.com>
2026-05-11 08:20:29 -03:00
Keshav Deshpande 483674b755 Refactor test class - OID4VCJWTIssuerEndpointTest (#48644)
closes #48416

Signed-off-by: Keshav Deshpande <keshavprashantdeshpande@gmail.com>
2026-05-11 13:14:55 +02:00
vramik 10d50847df Improve documentation for cases when migrating from FGAP:V1 to V2
Closes #48588

Signed-off-by: vramik <vramik@redhat.com>
2026-05-11 08:10:39 -03:00
Ryan Emerson e977267092 Document provided ProtocolMapper implementations (#47331)
Closes #47330

Signed-off-by: Ryan Emerson <remerson@ibm.com>
Co-authored-by: Stian Thorgersen <stianst@gmail.com>
2026-05-11 10:49:10 +00:00
Steven Hawkins e8a690f6d4 fix: simplifying the management of the raw distribution (#48759)
also optimized ClusterConfigDistTest

closes: #48754

Signed-off-by: Steve Hawkins <shawkins@redhat.com>
2026-05-11 11:47:52 +02:00
Giuseppe Graziano b814ff8003 rest credential offer experimental feature
Closes #46279

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-11 10:24:36 +02:00
Michal Vavřík b3602649f6 chore(tests): migrate ssl package to new test framework (#48407)
* Closes: https://github.com/keycloak/keycloak/issues/47812

Signed-off-by: Michal Vavřík <michal.vavrik@aol.com>
2026-05-11 10:16:33 +02:00