2263 Commits

Author SHA1 Message Date
Erik Jan de Wit 71e63e99dc moved AdminEnvironment to seperate file (#48039)
* moved AdminEnvironment to seperate file

fixes: #48038
Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

* code review

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>

---------

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-05-26 07:19:08 -04:00
bu6n 3ed18221ec fix quick theme export to contain variables for both light and dark mode (#49125) (#49322)
Signed-off-by: bu6n <b@u6n.ch>
2026-05-26 09:00:23 +00: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
Ricardo Martin 94dcc24a8d Upgrade playwright to avoid hangs on CI
Closes #49274

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-05-23 19:54:51 +02:00
Giuseppe Graziano 36513bae36 show/update credential attributes in admin/account ui (#49218)
Closes #48926

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-05-22 15:48:56 +02: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
Muhammed Oğuz 710539ca14 Add bottom padding on Authorization Evaluate results page
Closes #49063

Signed-off-by: Muhammed Oguz <muhammed@keymate.io>
2026-05-20 10:29:27 +02:00
Weblate (bot) e4e92460f9 Translations update from Hosted Weblate (#48714)
* Updated translation for German

Language: de

Updated translation for German

Language: de

Updated translation for German

Language: de

Updated translation for German

Language: de

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Ukrainian

Language: uk

Updated translation for Ukrainian

Language: uk

Translated using Weblate (Ukrainian)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/uk/

Updated translation for Ukrainian

Language: uk

Updated translation for Ukrainian

Language: uk

Updated translation for Ukrainian

Language: uk

Added translation using Weblate (Ukrainian)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Added translation using Weblate (Ukrainian)

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Japanese

Language: ja

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Kohei Tamura <ktamura.biz.80@gmail.com>

* Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Translated using Weblate (Catalan)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Catalan)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Catalan)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Catalan)

Added translation using Weblate (Catalan)

Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jordi Mallach <jordi@mallach.net>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Jordi Mallach <jordi@mallach.net>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/ca/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/ca/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/ca/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/ca/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme

* Updated translation for Czech

Language: cs

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Georgian

Language: ka

Updated translation for Georgian

Language: ka

Updated translation for Georgian

Language: ka

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>

---------

Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Jordi Mallach <jordi@mallach.net>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Jordi Mallach <jordi@mallach.net>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
2026-05-18 11:30:55 +02:00
Tomohiko Ozawa 42f3389fd6 Enable Enter key to trigger search in SearchInputComponent (#49029)
Signed-off-by: Tomohiko Ozawa <kota65535@gmail.com>
2026-05-18 10:19:45 +02:00
Martin Bartoš 5621e7f25e UI should prevent admins from defining a dynamic client scope with type Default (#48973)
* UI should prevent admins from defining a dynamic client scope with type Default

Closes #22229

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

* Add Alert, and change to non-dynamic scope

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

* Unify the dynamic label usage

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

---------

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-05-18 09:35:20 +02:00
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
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
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
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
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
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
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
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
Martin Bartoš 082c939c60 Identity Provider detail settings allow saving without changes
Closes #48771

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-05-07 15:35:13 +02:00
Pedro Igor 493145b4ce Align the format of the annotation kc.scim.schema.attribute to how SCIM defines custom schema attributes
Closes #48632

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-05-07 13:32:00 +00:00
Pedro Igor 401adc453e Allow mapping user attributes to SCIM attributes via User Profile UI
Closes #48347

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-05-07 07:59:24 -03:00
Weblate (bot) dabe9cda8e Translations update from Hosted Weblate (#48567)
* Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Updated translation for Catalan

Language: ca

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Czech

Language: cs

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Updated translation for French

Language: fr

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

---------

Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Ecron <ecron_89@hotmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Ecron <ecron_89@hotmail.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
2026-05-05 13:38:43 +02:00
Sar 263d44be88 Changes to address Org subdomain matching (#45190)
Signed-off-by: sar <sar.haidar@gmail.com>
2026-05-05 08:53:15 +02:00
HCL f02df4382a Skip no-op reorder in authentication flow drag-and-drop
When a user drags an authentication flow step and drops it back in its original position, the onDrop handler now returns early instead of calling executeChange(). This prevents an unnecessary refresh() call and the false "Flow successfully updated" success notification.

Closes #47710

Signed-off-by: chon3806 <93464148+chon3806@users.noreply.github.com>
2026-04-29 22:15:36 +02:00
Benjamin DeWeese fcd32e9ee4 Inject theme descriptions and make paths dynamic (#47771)
Added message bundles to custom themes so descriptions are now automatically rendered to user
Sanitize theme names for dynamic paths to allow multiple themes rendering at once

Closes #47762

Signed-off-by: Benjamin DeWeese <benjamin@deweese.cc>
2026-04-29 09:28:38 +02:00
Weblate (bot) 90c86ff7da Translations update from Hosted Weblate (#48437)
* Updated translation for Turkish

Language: tr

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Japanese

Language: ja

Updated translation for Japanese

Language: ja

Translated using Weblate (Japanese)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/ja/

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Co-authored-by: Takashi Norimatsu <takashi.norimatsu.ws@hitachi.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Signed-off-by: Takashi Norimatsu <takashi.norimatsu.ws@hitachi.com>

* Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for French

Language: fr

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 秉虎 <s96016641@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: 秉虎 <s96016641@gmail.com>

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

---------

Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Signed-off-by: Takashi Norimatsu <takashi.norimatsu.ws@hitachi.com>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: 秉虎 <s96016641@gmail.com>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Kohei Tamura <ktamura.biz.80@gmail.com>
Co-authored-by: Takashi Norimatsu <takashi.norimatsu.ws@hitachi.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: 秉虎 <s96016641@gmail.com>
2026-04-28 18:33:25 +02:00
Martin Bartoš 2f6c6b7b8a Admin console localizate realm name
Closes #48084

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-04-28 10:19:01 +02:00
Jonathan Ciak aeab2e0175 Fix declarative UI page change with signaled data table loading
Signed-off-by: Jonathan Ciak <jonathan.ciak@gtri.gatech.edu>
2026-04-27 15:54:20 +02:00
rmartinc e03bc86579 Changes for rebase and review.
Closes #48388

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-04-27 08:52:24 -03:00
rmartinc ff8937e00b Check Acceptable AAGUIDs sets a attestation preference different to None in admin console
Closes #48388

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-04-27 08:52:24 -03:00
rmartinc 3ba245c39c Make acceptable AAGUID ckeck in WebAuthn stricter
Closes #48388

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-04-27 08:52:24 -03: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
forkimenjeckayang eb0c837434 [OID4VCI] align issuer metadata/encryption behavior, move encryption tests to base suite (#48048)
closes #46274


Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>
2026-04-24 14:19:59 +02:00
Weblate (bot) 24e3ba9831 Translations update from Hosted Weblate (#48092)
* Translated using Weblate (Turkish)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Turkish)

Added translation using Weblate (Turkish)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Turkish)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Turkish)

Updated translation for Turkish

Language: tr

Updated translation for Turkish

Language: tr

Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-e-mail-theme/tr/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-login-theme/tr/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-v2-login-theme/tr/
Translate-URL: https://hosted.weblate.org/projects/keycloak/keycloak-welcome-theme/tr/
Translation: Keycloak/Keycloak E-mail theme
Translation: Keycloak/Keycloak Login theme
Translation: Keycloak/Keycloak Welcome theme
Translation: Keycloak/Keycloak v2 Login theme

* Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Updated translation for French

Language: fr

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Slovenian

Language: sl

Updated translation for Slovenian

Language: sl

Translated using Weblate (Slovenian)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/sl/

Updated translation for Slovenian

Language: sl

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matej <mmulej@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Matej <mmulej@gmail.com>

* Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 秉虎 <s96016641@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: 秉虎 <s96016641@gmail.com>

---------

Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Matej <mmulej@gmail.com>
Signed-off-by: 秉虎 <s96016641@gmail.com>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Matej <mmulej@gmail.com>
Co-authored-by: 秉虎 <s96016641@gmail.com>
2026-04-23 15:55:12 +00:00
vramik 13560136cf Introduce manage-organizations, view-organizations admin roles for Organization management
Closes #45497
Closes #31641

Signed-off-by: vramik <vramik@redhat.com>
2026-04-21 11:45:35 -03:00
Martin Kanis 7e464d8899 Able to update Identity Provider alias via admin console and API
Closes #47733

Signed-off-by: Martin Kanis <mkanis@redhat.com>
2026-04-20 16:43:45 -03:00
André Rocha 95cfffc4c4 Fix duplicated resource on current and next page in Auth Resources (#47446)
The Authorization Resources table was incorrectly duplicating the last
element of the current page as the first element of the next page.

This occurred because the fetching logic requests 'max + 1' items to
detect if a subsequent page exists. However, the UI was rendering the
entire array instead of limiting the display to the 'max' value.

Fixed by applying a .slice(0, max) before mapping the resources to
table rows. Added a Playwright E2E regression test to ensure unique
resource distribution across pages and prevent future regressions.

Closes #46088

---------

Signed-off-by: André Rocha <andre.queiroz.rocha@tecnico.ulisboa.pt>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-04-17 18:59:59 +02:00
Oluwatobi Mustapha cb0709694f Allow organization IdPs for members linked to another broker
Closes #47431
2026-04-15 08:57:38 -03:00
Weblate (bot) 0ddd90f749 Translations update from Hosted Weblate (#47830)
* Updated translation for Turkish

Language: tr

Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for German

Language: de

Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Updated translation for Czech

Language: cs

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>

* Updated translation for Vietnamese

Language: vi

Updated translation for Vietnamese

Language: vi

Translated using Weblate (Vietnamese)

Translation: Keycloak/Admin backend
Translate-URL: https://hosted.weblate.org/projects/keycloak/theme-baseadmin/vi/

Updated translation for Vietnamese

Language: vi

Updated translation for Vietnamese

Language: vi

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: it-site44-com <it.site44.com@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: it-site44-com <it.site44.com@gmail.com>

* Updated translation for Indonesian

Language: id

Co-authored-by: Andika Triwidada <andika@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Andika Triwidada <andika@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>

* Updated translation for French

Language: fr

Updated translation for French

Language: fr

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Sylvain Pichon <service@spichon.fr>

* Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Updated translation for Swedish

Language: sv

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>

* Updated translation for Slovenian

Language: sl

Updated translation for Slovenian

Language: sl

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matej <mmulej@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Matej <mmulej@gmail.com>

* Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Updated translation for Chinese (Traditional Han script)

Language: zh_Hant

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 秉虎 <s96016641@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: 秉虎 <s96016641@gmail.com>

---------

Signed-off-by: Arif EROL <arif.erol16@gmail.com>
Signed-off-by: Hosted Weblate <hosted@weblate.org>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Peter Schiffer <peter@pschiffer.eu>
Signed-off-by: it-site44-com <it.site44.com@gmail.com>
Signed-off-by: Andika Triwidada <andika@gmail.com>
Signed-off-by: Sylvain Pichon <service@spichon.fr>
Signed-off-by: Daniel Nylander <daniel@danielnylander.se>
Signed-off-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Signed-off-by: Matej <mmulej@gmail.com>
Signed-off-by: 秉虎 <s96016641@gmail.com>
Co-authored-by: Arif EROL <arif.erol16@gmail.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Peter Schiffer <peter@pschiffer.eu>
Co-authored-by: it-site44-com <it.site44.com@gmail.com>
Co-authored-by: Andika Triwidada <andika@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: Matej <mmulej@gmail.com>
Co-authored-by: 秉虎 <s96016641@gmail.com>
2026-04-14 21:10:26 +02:00
Muhammed Oğuz d4f3309b26 Sync client scope state between tabs in dedicated scopes
Closes #46083

Signed-off-by: Muhammed Oguz <muhammed@keymate.io>
2026-04-14 15:46:58 +02:00
Pierluigi Lenoci 3cba5a34a9 refactor(admin-ui): replace use-react-router-breadcrumbs with React Router native useMatches
* refactor(admin-ui): replace use-react-router-breadcrumbs with React Router native useMatches

Replace the third-party `use-react-router-breadcrumbs` package with
React Router v6's built-in `useMatches()` hook for breadcrumb rendering.

Since the Admin UI already uses `createHashRouter` (data router API),
`useMatches()` is available and provides access to route `handle` data
at each matched route level.

Changes:
- Move `breadcrumb` property from route objects into `handle` across
  all 89 route definitions, making it accessible via `useMatches()`
- Update `AppRouteObjectHandle` type to include the optional
  `breadcrumb` property
- Remove `breadcrumb` from `AppRouteObject` interface (no longer a
  top-level route property)
- Rewrite `PageBreadCrumbs` component to use `useMatches()` instead
  of `useBreadcrumbs()` from the third-party library
- Remove `use-react-router-breadcrumbs` dependency from package.json
- Update pnpm-lock.yaml

Closes #19309

Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-04-13 13:11:28 +02:00
HCL 60112597c3 Remove console.log from admin UI workflow test
The console.log statement in the workflow delete test was left from debugging and should not be present in test code.

Closes #47958

Signed-off-by: chon3806 <93464148+chon3806@users.noreply.github.com>
2026-04-13 08:18:18 +00:00
Nguyễn Mạnh Thắng f10e5b4539 Add Vietnamese (vi) locale support with initial translations
Closes #47951

Register the Vietnamese locale across all theme types (login, account, admin, email) and add initial message bundles seeded from English sources. Vietnamese translations will follow via Weblate.

Signed-off-by: thangnm11 <thang.991992@gmail.com>
Co-authored-by: ThangNM <thangnm@hotmail.com>
2026-04-13 09:16:14 +02:00
Pierluigi Lenoci cdb21c6288 fix(admin-ui): replace explicit catch (error: any) with proper types (#47397)
Remove all explicit `: any` annotations from catch clauses in the
Admin UI. Since TypeScript's `strict` mode (with
`useUnknownInCatchVariables`) already types catch variables as
`unknown`, the explicit `: any` annotations were unnecessarily
bypassing type safety.

For catch blocks that only pass the error to `addError()` (which
accepts `unknown`), the fix is simply removing the `: any` annotation.

For two catch blocks that performed unsafe property access on the
error (`error.response?.data?.errorMessage`), the fix replaces:
- `CreateFlow.tsx`: use `addError()` instead of manual message
  extraction (consistent with the rest of the codebase)
- `ClientScopesSection.tsx`: use `getErrorMessage()` from
  `@keycloak/keycloak-ui-shared` for type-safe error formatting

Closes #17771

Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com>
2026-04-13 09:14:52 +02:00
Asish Kumar 9130641970 Rename 'Pre-Authorized Code Lifespan' to 'Credential Offer Lifespan' (#47563)
Closes #47274



Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
Signed-off-by: Marek Posolda <mposolda@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Marek Posolda <mposolda@gmail.com>
2026-04-10 17:10:14 +02:00
Erik Jan de Wit 03938ead4c removed invalid package reference (#47906)
fixes: #47905

Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
2026-04-10 11:41:44 +02:00
forkimenjeckayang f9e1879d4b [OID4VCI] Fix OID4VCI token typ defaults by credential format (#47779)
closes #45420


Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>
2026-04-08 16:49:44 +02:00
dependabot[bot] 28839f181e Bump vite from 7.3.0 to 7.3.2 in /js (#47785)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.0 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-07 15:58:30 +02:00