8000 Remove ability to set up multivalued issuer for OIDC providers by vramik · Pull Request #54682 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content

Remove ability to set up multivalued issuer for OIDC providers - #54682

Merged
pedroigor merged 1 commit into
keycloak:mainfrom
vramik:54458-oidc-multi-issuer-sub
Nov 6, 2026
Merged

pedroigor merged 1 commit into
keycloak:mainfrom
vramik:54458-oidc-multi-issuer-sub

Conversation

@vramik
@vramik vramik commented Nov 5, 2026
Copy link
Copy Markdown
Contributor

Closes #54458

@vramik
vramik requested a review from a team as a code owner November 5, 2026 14:14
Copilot AI balanced review requested due to automatic review settings November 5, 2026 14:14
Copilot AI left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Blank legacy issuer lists can still cause entire realm imports to fail, and the realm-import and database-upgrade migration paths lack regression tests.

3 open issues
What changed in this PR

This PR addresses #54458 by restricting OIDC identity providers to one configured issuer, preventing cross-issuer subject collisions under a shared provider alias.

Changes:

  • Reject comma-separated issuer configurations and use single-issuer matching for token validation and exchange.
  • Migrate legacy issuer lists during database upgrades and realm imports, disabling affected providers for administrator review.
  • Document the restriction and migration process, and add an admin-create rejection test.
File Description
tests/​base/​src/​test/​java/​org/​keycloak/​tests/​admin/​identityprovider/​IdentityProviderIssuerTest.java Tests rejection of multiple issuers during provider creation.
services/​src/​main/​java/​org/​keycloak/​partialimport/​IdentityProvidersPartialImport.java Reports invalid imported configurations as validation errors.
services/​src/​main/​java/​org/​keycloak/​broker/​oidc/​OIDCIdentityProviderConfig.java Rejects comma-separated issuer values.
services/​src/​main/​java/​org/​keycloak/​broker/​oidc/​OIDCIdentityProvider.java Matches one configured issuer during validation and exchange.
server-spi-private/​src/​main/​java/​org/​keycloak/​migration/​migrators/​OidcIssuerMigration.java Migrates legacy realm-import issuer lists and disables affected providers.
server-spi-private/​src/​main/​java/​org/​keycloak/​broker/​provider/​SingleIssuerIdentityProviderConfig.java Marks configurations requiring a single issuer.
model/​storage-private/​src/​main/​java/​org/​keycloak/​storage/​datastore/​DefaultExportImportManager.java Runs migration before import validation and wraps configuration errors.
model/​storage-private/​src/​main/​java/​org/​keycloak/​migration/​migrators/​MigrateTo27_0_0.java Removes a blank line; no behavioral change.
model/​jpa/​src/​main/​resources/​META-INF/​jpa-changelog-27.0.0.xml Registers the database migration.
model/​jpa/​src/​main/​java/​org/​keycloak/​connections/​jpa/​updater/​liquibase/​custom/​JpaUpdate27_0_0_OidcIssuerMigration.java Rewrites stored issuer lists and disables affected providers.
docs/​guides/​securing-apps/​token-exchange.adoc Explains separate providers for exchanging tokens from multiple issuers.
docs/​documentation/​upgrading/​topics/​changes/​changes-27_0_0.adoc Documents migration behavior and required administrator review.
docs/​documentation/​server_admin/​topics/​identity-broker/​oidc.adoc Documents the single-issuer setting restriction.

Review effort: Balanced

@vramik
vramik requested a review from pedroigor November 5, 2026 15:57
@pedroigor
pedroigor force-pushed the 54458-oidc-multi-issuer-sub branch from da40d30 to 83de197 Compare November 6, 2026 14:04
Copilot AI balanced review requested due to automatic review settings November 6, 2026 14:04
Copilot AI left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Comma-only legacy issuer values remain invalid after migration, causing realm imports to fail even when affected providers are disabled.

2 open issues
2 resolved since last review

Review effort: Balanced

@pedroigor
pedroigor enabled auto-merge (rebase) November 6, 2026 14:12
@pedroigor
pedroigor merged commit a9d7e41 into keycloak:main Nov 6, 2026
95 of 96 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Security] OIDC multi-issuer subject collision can select another user

3 participants

0