Skip to content

Refactor OIDC protocol mapper creation to use a type-safe builder pattern#50974

Draft
mabartos wants to merge 1 commit into
keycloak:mainfrom
mabartos:refactor-protocol-mappers
Draft

Refactor OIDC protocol mapper creation to use a type-safe builder pattern#50974
mabartos wants to merge 1 commit into
keycloak:mainfrom
mabartos:refactor-protocol-mappers

Conversation

@mabartos

Copy link
Copy Markdown
Member

Closes #50973

@mabartos mabartos self-assigned this Jul 17, 2026
@mabartos
mabartos marked this pull request as ready for review July 20, 2026 10:35
@mabartos
mabartos requested review from a team as code owners July 20, 2026 10:35
Copilot AI review requested due to automatic review settings July 20, 2026 10:35
@mabartos
mabartos requested review from a team as code owners July 20, 2026 10:35

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.

Pull request overview

Introduces type-safe fluent builders for OIDC protocol mapper creation and migrates server and test callers away from positional factory methods.

Changes:

  • Adds generic and OIDC-specific builder hierarchies with typed claim and inclusion enums.
  • Adds mapper-specific builders and migrates built-in mapper creation.
  • Updates tests and utilities to use the builder API.

Reviewed changes

Copilot reviewed 48 out of 48 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
testsuite/.../OrganizationOIDCProtocolMapperTest.java Migrates audience mapper setup.
testsuite/.../OIDCAdvancedRequestParamsTest.java Migrates claims mapper setup.
testsuite/.../NonceBackwardsCompatibleMapperTest.java Uses the nonce mapper builder.
testsuite/.../TokenIntrospectionTest.java Migrates audience mapper setup.
testsuite/.../TokenExchangeTestUtils.java Migrates token-exchange mappers.
testsuite/.../StandardTokenExchangeV2Test.java Migrates claim and audience mappers.
testsuite/.../ClientTokenExchangeSAML2Test.java Migrates session-note mappers.
testsuite/.../OIDCProtocolMappersTest.java Migrates user-property mappers.
testsuite/.../AccessTokenTest.java Migrates hardcoded claims.
testsuite/.../LDAPMultipleAttributesTest.java Migrates LDAP attribute mappers.
testsuite/.../AbstractKerberosSingleRealmTest.java Migrates Kerberos session-note mapper.
testsuite/.../ClientPoliciesTest.java Migrates claims-value mapper.
testsuite/.../OAuth2BrokerTest.java Migrates broker hardcoded claims.
tests/utils-shared/.../ProtocolMapperUtil.java Reimplements mapper utilities with builders.
tests/base/.../TokenExchangeDelegationTest.java Migrates parameterized property mapper.
tests/base/.../StandardBaseTokenExchangeV2Test.java Migrates token-exchange mappers.
tests/base/.../StandardBaseTokenExchangeClientPoliciesV2Test.java Migrates hardcoded claim setup.
tests/base/.../ParameterizedScopesIsolationTest.java Migrates parameterized scope mapper.
tests/base/.../ParameterizedScopeMapperTest.java Migrates parameterized mapper fixtures.
tests/base/.../ClientIdMetadataDocumentTest.java Migrates audience mapper setup.
tests/base/.../CredentialsTest.java Changes secret event assertion.
tests/base/.../RealmAdminAccessTest.java Migrates role-related mappers.
services/.../ProtocolMapperBuilder.java Adds the base mapper builder.
services/.../OIDCLoginProtocolFactory.java Migrates built-in OIDC mapper creation.
services/.../UserSessionNoteMapper.java Adds a session-note builder.
services/.../UserRealmRoleMappingMapper.java Adds a realm-role builder.
services/.../UserPropertyMapper.java Exposes the default OIDC builder.
services/.../UserClientRoleMappingMapper.java Adds a client-role builder.
services/.../UserAttributeMapper.java Adds an attribute mapper builder.
services/.../SubMapper.java Exposes the default OIDC builder.
services/.../SessionStateMapper.java Exposes the default OIDC builder.
services/.../RoleNameMapper.java Adds a role-name builder.
services/.../ParameterizedScopeUserPropertyMapper.java Adds a property mapper builder.
services/.../ParameterizedScopeMapper.java Adds a parameterized scope builder.
services/.../OIDCProtocolMapperBuilder.java Adds OIDC enums and fluent configuration.
services/.../NonceBackwardsCompatibleMapper.java Adds a nonce mapper builder.
services/.../HardcodedRole.java Adds a hardcoded-role builder.
services/.../HardcodedClaim.java Adds a hardcoded-claim builder.
services/.../GroupMembershipMapper.java Adds a group-membership builder.
services/.../FullNameMapper.java Exposes the default OIDC builder.
services/.../ClaimsParameterWithValueIdTokenMapper.java Adds a claims-value builder.
services/.../ClaimsParameterTokenMapper.java Adds a claims-token builder.
services/.../AudienceResolveProtocolMapper.java Adds an audience-resolution builder.
services/.../AudienceProtocolMapper.java Adds an audience mapper builder.
services/.../AmrProtocolMapper.java Exposes the default OIDC builder.
services/.../AllowedWebOriginsProtocolMapper.java Adds a web-origins builder.
services/.../AcrProtocolMapper.java Exposes the default OIDC builder.
services/.../OrganizationMembershipMapper.java Adds an organization mapper builder.

Comment thread tests/base/src/test/java/org/keycloak/tests/admin/client/CredentialsTest.java Outdated
@mabartos
mabartos marked this pull request as draft July 20, 2026 13:01
…tern

Closes keycloak#50973

Signed-off-by: Martin Bartoš <mabartos@redhat.com>
@mabartos
mabartos force-pushed the refactor-protocol-mappers branch from b1122cc to c489d59 Compare July 23, 2026 13:54
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.

Refactor OIDC protocol mapper creation to use a type-safe builder pattern

2 participants