Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Migrates UAA’s SCIM filter parsing from the deprecated com.unboundid.product.scim:scim-sdk to com.unboundid.product.scim2:scim2-sdk-common, updating production parsing/conversion code paths and adjusting/expanding tests to match the SCIM2 parser’s behavior and stricter syntax validation.
Changes:
- Replace the UnboundID SCIM 1.1 SDK dependency with
scim2-sdk-commonin Gradle version catalog and module build files. - Update SCIM filter parsing/conversion in
SimpleSearchQueryConverterandUserIdConversionEndpointsto usecom.unboundid.scim2.common.filters.Filter, including max filter-depth enforcement. - Update and expand tests to reflect SCIM2 parsing behavior and add additional malformed/injection-oriented filter cases.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
uaa/src/test/java/org/cloudfoundry/identity/uaa/scim/endpoints/ScimUserEndpointsTests.java |
Removes SCIM SDK filter builder usage and updates AssertJ exception assertions. |
uaa/build.gradle.kts |
Swaps test dependency from legacy SCIM SDK to scim2-sdk-common. |
server/src/test/java/org/cloudfoundry/identity/uaa/scim/jdbc/ScimSearchQueryConverterTests.java |
Adds parameterized tests for malformed/injection-like filters and updates assertions. |
server/src/test/java/org/cloudfoundry/identity/uaa/resources/jdbc/SimpleSearchQueryConverterTests.java |
Updates expectations for SCIM2 parser errors and adds depth-limit tests. |
server/src/test/java/org/cloudfoundry/identity/uaa/oauth/approval/ApprovalsAdminEndpointsTests.java |
Removes legacy SCIM SDK filter construction and simplifies TypeReference; adjusts filter helper. |
server/src/main/java/org/cloudfoundry/identity/uaa/scim/endpoints/UserIdConversionEndpoints.java |
Switches parsing to SCIM2 Filter, adds depth limiting, and updates operator/type handling. |
server/src/main/java/org/cloudfoundry/identity/uaa/resources/jdbc/SimpleSearchQueryConverter.java |
Replaces SCIM SDK parsing with SCIM2 Filter, updates SQL generation/value extraction, and enforces max depth. |
server/build.gradle.kts |
Swaps runtime dependency from legacy SCIM SDK to scim2-sdk-common. |
gradle/libs.versions.toml |
Adds scim2Sdk/scim2SdkCommon entries and removes the legacy SCIM SDK entry. |
Comment on lines
3
to
5
| import tools.jackson.core.type.TypeReference; | ||
| import com.unboundid.scim.sdk.AttributePath; | ||
| import com.unboundid.scim.sdk.SCIMFilter; | ||
| import org.assertj.core.api.InstanceOfAssertFactories; | ||
| import org.cloudfoundry.identity.uaa.annotations.WithDatabaseContext; |
strehle
approved these changes
Jun 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
com.unboundid.product.scim:scim-sdk (version 2.0.0) is deprecated — the repo is archived, last meaningful work was ~2015, and Ping Identity recommends com.unboundid:scim2-sdk-common as the replacement. The SDK is used only for SCIM filter string parsing in 2 production files and 2 test files — not for SCIM resource representation.
The SCIM 2.0 SDK parses the same basic filter grammar (eq, co, sw, pr, gt, ge, lt, le, and, or) used in UAA, so existing clients sending filter strings are unaffected.
SCIM 1.1 SDK is used directly in server/build.gradle.kts:64 with several exclusions hinting at its age.