1
0
mirror of https://github.com/keycloak/keycloak.git synced 2026-10-23 19:29:23 +03:00

510 Commits

Author SHA1 Message Date
Alexander Schwartz
0d14bcb39d Include OID4VCI preview content, but not experimental content
Closes #54130

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-20 15:15:13 +02:00
Giuseppe Graziano
3fb8fa9dca enforce client authentication for CIBA
Closes #53937

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-10-19 14:38:05 +02:00
andymunro
bc4b816124 Ensure asterisks are marked as passthrough
Closes #54068

Signed-off-by: AndyMunro <amunro@redhat.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-10-16 18:24:06 +02:00
Marek Posolda
eae20e964b Warnings about the fact that client administrator can assign any client scope (#54011)
closes #54010

Signed-off-by: mposolda <mposolda@gmail.com>
2026-10-16 08:43:36 +02:00
Martin Kanis
77b0ffa825 Unverified broker email can satisfy an organization domain gate (#53858)
* Unverified broker email can satisfy an organization domain gate

Closes #53815

Signed-off-by: Martin Kanis <mkanis@ibm.com>
2026-10-14 07:59:58 -03:00
erenkan
74d9c74a01 Validate workflow schedule and restart position values
Closes #53849

Signed-off-by: erenkan <eren@keymate.io>
2026-10-14 07:20:23 -03:00
Alexis Rico
3fcada6036 Document accepting an organization invitation through an identity provider
The invitation docs only described the registration form. Explain that the
invitee can return to the login page and authenticate through an identity
provider instead, that the resulting membership is unmanaged, and that the
email of the account has to match the address the invitation was sent to.

Note that the invitation is accepted through any identity provider in the
realm, and that a user already linked to the provider skips first broker
login, so the invitation stays pending until it expires.

Signed-off-by: Alexis Rico <sferadev@gmail.com>
2026-10-13 07:36:51 -03:00
Luca Tronchin
8539464b05 Resolve properties in the notify-user step subject
Closes #53312

The subject of the notify-user step was passed to the email provider
verbatim, where it ends up as a java.text.MessageFormat pattern when it
does not match a key from the email theme message bundle. A subject such
as "${user.firstName}, log in to keep your account active" therefore
failed with:

    IllegalArgumentException: can't parse argument number: user.firstName

The email was never sent, the step was still marked as completed, and
the following steps of the workflow ran as usual.

Resolve properties in the subject with the same resolver already used
for the custom message, and escape the resulting text so that it is not
interpreted as a MessageFormat pattern. Escaping is a no-op for a text
without MessageFormat meta characters, so a subject referencing a key
from the message bundle keeps being resolved and localized as before.
It also makes a subject with a single quote, like "your account's
review", keep its quote instead of silently losing it.

Signed-off-by: Luca Tronchin <ltronky@gmail.com>
2026-10-09 08:07:58 -03:00
AndyMunro
19e6f6e10c Correct links that fail or are coded only for upstream
Closes #53624

Signed-off-by: AndyMunro <amunro@redhat.com>
2026-10-09 11:47:30 +02:00
vramik
85cb6f17bb non-imported federated users returned in search results for query-users-only delegated admins
Closes #53693

Signed-off-by: vramik <vramik@redhat.com>
2026-10-08 11:29:44 -03:00
vramik
4c746a54c6 Organization invitation redirectUrl is not validated against the account client allowlist, leaking a new user's authorization code
Closes #53058

Signed-off-by: vramik <vramik@redhat.com>
2026-10-07 09:12:23 -03:00
Michal Vavřík
b919792f7d fix: restrict CRL files to conf and omit CRL locations from responses
closes: #53419

Signed-off-by: Michal Vavřík <dev@michalvavrik.net>
2026-10-07 11:57:18 +02:00
Ricardo Martin
5d3d3d9980 Do not chek critical status for key usage validations (#53109)
* Do not chek critical status for key usage validations.
Provide perovider options for backwards compatibility.
Closes #52982

Signed-off-by: rmartinc <rmartinc@redhat.com>

* Move X509BrowserLoginTest and X509DirectGrantTest to the new CI
Closes #52982

Signed-off-by: rmartinc <rmartinc@redhat.com>

* Migrate tests to the new CI
Closes #52982

Signed-off-by: rmartinc <rmartinc@redhat.com>

* Do not initialize stores is tls is not enabled in ManagedCertificates
Closes #52982

Signed-off-by: rmartinc <rmartinc@redhat.com>

---------

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-10-06 13:14:27 +02:00
Martin Kanis
34bcada22a Regression with Trust Email when the userinfo endpoint is used
Closes #53471

Signed-off-by: Martin Kanis <mkanis@ibm.com>
2026-10-06 07:52:05 -03:00
Alexander Schwartz
26027006e9 Fixing docs links
Closes #53422

Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-06 08:19:02 +02:00
Tomáš Kyjovský
e4cdb5eb88 Enforce signature validation for back-channel logout tokens even when the IDP's signature validation is disabled.
Signed-off-by: Tomas Kyjovsky <tkyjovsk@ibm.com>

Closes #51381
2026-10-05 14:49:35 -03:00
Martin Kanis
fff5ffb4e7 Allow OAuth scope characters in organization alias
Organization alias validation reused the generic RFC 3986
reserved-character blocklist shared by realms, clients, and IdP
aliases, which is stricter than OAuth 2.0 scope-token syntax
(RFC 6749, Section 3.3). Validate the alias against the RFC 6749
scope-token character range instead, so characters such as '/'
and ':' are permitted.

Closes #50703

Signed-off-by: TamaraMurazyan <murazyan.tamara5566@gmail.com>
Signed-off-by: Martin Kanis <mkanis@ibm.com>
Co-authored-by: TamaraMurazyan <murazyan.tamara5566@gmail.com>
2026-10-01 22:56:33 +02:00
Ogenbertrand
e0756392d1 Exclude self-signed roots from signed issuer metadata
Closes #340

Signed-off-by: Ogenbertrand <ogenbertrand@gmail.com>
2026-09-30 15:03:16 +02:00
Awambeng
6d2c039b9a [OID4VCI]: Add issuer_info support to OID4VCI metadata (#53330)
Closes #53293


Signed-off-by: Awambeng Rodrick <awambengrodrick@gmail.com>
2026-09-30 13:52:15 +02:00
Martin Bartoš
90002732fa MayAct executor rejects valid delegation when the scope parameter is not the exact stored username
Closes #53138

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
2026-09-29 15:33:18 +02:00
Michal Vavřík
b035515009 doc: scim and admin api v2 null handling in queries (#53229)
closes: https://github.com/keycloak/keycloak/issues/51800

Signed-off-by: Michal Vavřík <dev@michalvavrik.net>
2026-09-29 15:00:45 +02:00
mposolda
f1ba837d1a Deprecate client switch 'Use refresh tokens for client credentials grant'
closes #53170

Signed-off-by: mposolda <mposolda@gmail.com>
2026-09-29 14:30:55 +02:00
HerrDerb
c043345206 Show realm role mappings to admins that can map the role
The role-mappings endpoints filter roles by canView. A manage-users
admin can map non-admin realm roles but lacks view-realm, so the filter
emptied the role mapping tab in the admin console. The same happens with
fine-grained admin permissions when an admin holds map-role on a role
but no view permission on the realm or client. Allow canView to succeed
when the admin can map the role.

Apply the same per-role visibility rule to the client-level
role-mappings endpoints, which returned 403 without a view permission on
the client, and to the realm and client roles of the group
representation.

Closes #52753
Closes #52727

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: HerrDerb <truuba@gmail.com>
Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-09-29 07:28:58 -03:00
Pedro Igor
5c37573cd9 Make sure denies only apply for policies referencing the same resource type (#53225)
Closes #52188

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-09-29 07:45:49 +02:00
Ricardo Martin
079a633632 Move parameterized scopes and token exchange delegation to preview
Closes #53108
Closes #53149

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-09-25 16:30:15 +02:00
Giuseppe Graziano
6f652ccd4e Ignore audience for removed clients
Closes #53152

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-09-24 19:25:10 +02:00
Giuseppe Graziano
be648957ff Ignore audience for disabled clients
Closes #53074

Signed-off-by: Giuseppe Graziano <g.graziano94@gmail.com>
2026-09-24 12:14:05 +02:00
Stefan Guilhen
74d56042e4 Review documentation for uncovered capabilities, constraints, and limitations before making SCIM supported
Co-authored-by: Pedro Igor <pigor.craveiro@gmail.com>
Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>
2026-09-23 14:38:30 -03:00
Stefan Guilhen
410e6bcf79 Promote SCIM API feature to supported
Closes #52760

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>
2026-09-23 14:38:30 -03:00
Stefan Guilhen
bad0e73d41 Stop relying on the deprecated Full Scope Allowed switch in SCIM clients
Stop relying on the deprecated Full Scope Allowed switch in SCIM clients

Closes keycloak#53064
2026-09-23 09:49:40 -03:00
vramik
2ad48ee078 Multi-IdP for orgs: Documentation
Closes #52811

Signed-off-by: vramik <vramik@redhat.com>
2026-09-23 07:33:20 -03:00
vramik
2d41ef9622 Document view scope is required for creating members of a group
Closes #53013

Signed-off-by: vramik <vramik@redhat.com>
2026-09-23 07:22:11 -03:00
Yike Gao
0057e27c86 Fix outdated Admin Console steps in token exchange delegation docs
Closes #51987

Signed-off-by: Yike Gao <yikegao8@gmail.com>
2026-09-23 12:19:32 +02:00
Chance Coleman
ce5f9ce6dc Resolve Kubernetes IdP issuer from discovery
Closes #49039

Signed-off-by: UnicornChance <chance@defenseunicorns.com>
2026-09-23 07:40:49 +00:00
Jimmy Chakkalakal
ea83ab966a Fix refresh token introspection when token_type_hint is omitted
Since 26.6.2 the introspection endpoint validates that the authenticated
client is present in the token's aud claim. Refresh and offline tokens
are issued to the realm rather than to an audience of clients, and
audience protocol mappers do not apply to them, so introspecting a
refresh token without token_type_hint - or with
token_type_hint=access_token - was routed to the access token provider
and incorrectly returned {"active": false}.

Detect refresh and offline tokens from their typ claim and route them to
RefreshTokenIntrospectionProvider, which validates the caller against azp
(issuedFor) instead of aud. Any other caller-provided hint is left
untouched.

Closes #51552

Co-authored-by: tusharsaini18899 <sainitushar18899@gmail.com>
Signed-off-by: Jimmy Chakkalakal <jimmy.chakkalakal@ibm.com>
2026-09-22 15:49:45 +02:00
Awambeng
525b92e822 Promote OID4VCI from experimental to preview (#53008)
Closes #52813


Signed-off-by: Awambeng Rodrick <awambengrodrick@gmail.com>
2026-09-21 18:30:18 +02:00
Sebastian Łaskawiec
1ac9f9218f Trigger client policies for admin protocol mapper changes (#50205)
closes #50131




Signed-off-by: Sebastian Łaskawiec <sebastian.laskawiec@defenseunicorns.com>
2026-09-21 13:36:17 +02:00
mposolda
937cc0e24a Deprecate Kerberos Credential delegation
closes #44062

Signed-off-by: mposolda <mposolda@gmail.com>
2026-09-18 14:47:15 +02:00
Marek Posolda
06e82d6976 Deprecate full scope allowed switch (#52924)
closes #52923



Signed-off-by: mposolda <mposolda@gmail.com>
Signed-off-by: Marek Posolda <mposolda@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-09-18 14:41:21 +02:00
forkimenjeckayang
239cb341f3 [OID4VCI] Document that credential issuance uses live user attributes (#52739)
Closes #52668


Signed-off-by: forkimenjeckayang <forkimenjeckayang@gmail.com>
2026-09-14 17:11:58 +02:00
Stefan Guilhen
b4f6afa2e2 Document and test SCIM user creation behavior with federation providers
SCIM POST /Users shares the same creation path as the Admin REST API
(UserProfile.create() -> session.users().addUser()), so a user storage
provider with sync registration enabled can create the user outside of
local storage. If that provider does not import users, the created user
becomes unreachable via subsequent SCIM GET/search/DELETE requests. This
is accepted as a documented limitation of this version of the SCIM API
rather than changed in code.

- Extend the custom-providers UserMapStorage test fixture with a
  SYNC_REGISTRATIONS gate (mirroring LDAPStorageProvider), defaulting to
  enabled to preserve existing behavior for current consumers.
- Add FederatedUserTest coverage for the three relevant variations: no
  sync registration (created locally), sync registration with import
  enabled (federated but immediately visible), and sync registration
  with import disabled (created but unreachable via SCIM).
- Document the limitation in the SCIM server admin guide's "Creating a
  user" and "Deleting a user" sections.

Closes #51735

Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>
2026-09-14 11:07:34 -03:00
Marek Posolda
06f4cad392 [OID4VCI] Review support for proofs, attestations and key binding (#52637)
closes #46272
closes #46273


Signed-off-by: mposolda <mposolda@gmail.com>
Signed-off-by: Marek Posolda <mposolda@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-09-11 14:33:12 +02:00
jimmychakkalakal
934da06f98 Add OID4VCI credential management and revocation docs … (#52569)
Closes #49506


Signed-off-by: Jimmy Chakkalakal <jimmy.chakkalakal@ibm.com>
Signed-off-by: jimmychakkalakal <47317106+jimmychakkalakal@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-09-10 18:39:27 +02:00
Martin Kanis
2c0fd93c05 Introduce a capability allowing to change current membershipType for existing organization members
Closes #48913

Signed-off-by: Martin Kanis <mkanis@ibm.com>
2026-09-09 08:52:10 -03:00
sandaruwijewardhana
f4bc435cf8 Only remove filtered values from multivalued simple attributes
A filtered PATCH remove such as "assurance[value eq \"x\"]" resolved to a
null value when the attribute had no complex type, because the filter
converter bailed out early. The null reached the model remover, which
treats null or empty as "remove every value", so all values were deleted
instead of the matched one.

Multivalued attributes without a complex type expose only the "value"
sub-attribute, so resolve the filter against it and let the existing
multivalued mapping turn it into the set of values to remove.

Closes #51525

Signed-off-by: sandaruwijewardhana <sandaruwijewardhana@gmail.com>
2026-09-08 14:27:55 -03:00
Jimmy Chakkalakal
55dfa857b4 Add documentation for verifiable-credential AIA
Document the verifiable_credential_offer Application Initiated Action,covering configuration, application integration, the QR code flow, and admin-initiated credential offers via email.

Closes #50041

Signed-off-by: Jimmy Chakkalakal <jimmy.chakkalakal@ibm.com>
2026-09-08 12:18:53 +02:00
Muhammed Oğuz
033c48138a Add per-application session termination to Account Console (#47922)
Closes #47921

Signed-off-by: Muhammed Oguz <muhammed@keymate.io>
Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Signed-off-by: Alexander Schwartz <alexander.schwartz@ibm.com>
Co-authored-by: Alexander Schwartz <alexander.schwartz@gmx.net>
Co-authored-by: Alexander Schwartz <alexander.schwartz@ibm.com>
2026-09-03 08:29:51 +00:00
rmartinc
e075692ae4 Check CA Subject DN in X509 user authenticators too
Closes #51850

Signed-off-by: rmartinc <rmartinc@redhat.com>
2026-08-28 15:48:15 -03:00
Dominik Schlosser
0c54fe85f5 [OID4VP] Delegate trust material to an external trust IdP by alias
Signed-off-by: Dominik Schlosser <dominik.schlosser@gmail.com>
2026-08-25 13:43:58 +02:00
Pedro Igor
90224090c6 Client scope boundary bypassed when resolving admin roles via KeycloakIdentity
Closes #51807

Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
2026-08-24 11:49:26 -03:00