Skip to content

Releases: pingidentity/scim2

UnboundID SCIM 2 SDK 3.2.0

04 Dec 19:04
Compare
Choose a tag to compare

We have just released version 3.2.0 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:

  • (#147) Added better customization of the MapperFactory. The MapperFactory class can be used to customize the behavior of the SDK when it converts JSON strings to Java Objects, and vice versa. This release now supports overriding the object mapper returned by the JsonUtils.createObjectMapper() method to allow for the addition of custom serializers and deserializers. See the class-level Javadoc of MapperFactory for more information on how to accomplish this.

  • (#213) Added a property that allows ADD patch operations with value filters to target an existing value. For example, consider the following patch request. This request aims to add a display field on a user's work email.

    {
      "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
      "Operations": [
        {
          "op": "add",
          "path": "emails[type eq \"work\"].display",
          "value": "Work Email"
        }
      ]
    }

    When the new behavior is configured, this operation will search the resource for an existing "work" email and add a "display": "Work Email" field to that email. This behavior allows for better integration with SCIM provisioners that send individual requests such as emails[type eq "work"].display followed by emails[type eq "work"].value, which are intended to target the same email. To use this behavior, toggle the property by adding the following Java code in your application:

    PatchOperation.APPEND_NEW_PATCH_VALUES_PROPERTY = false;

    The default value of APPEND_NEW_PATCH_VALUES_PROPERTY is true, which will always add a new value (i.e., email) on the multi-valued attribute instead of updating an existing value/email. This matches the behavior of the SDK since the 3.0.0 release.

  • Refreshed the documentation of the GenericScimResource class to provide better insight on how it can be used to define resource types for objects that don't have a strongly defined schema. The class-level Javadoc describes how to interface with the object effectively, and the methods now provide clearer examples of how they can be used.

  • (#233) Updated the ListResponse class to prevent deserialization errors when the Resources array is null. This is now permitted when totalResults and/or itemsPerPage is set to 0. RFC 7644 Section 3.4.2 explicitly states that the Resources array may be null when totalResults is 0, so the SCIM SDK will no longer throw deserialization exceptions when processing JSON of this form.

  • Updated the class-level documentation of ListResponse to provide more background about the resource type and how to interface with the object.

  • Fixed an issue where AndFilter.equals() and OrFilter.equals() could incorrectly evaluate to true.

  • Updated Jackson dependencies to version 2.17.2.

UnboundID SCIM 2 SDK 3.1.0

25 Jun 21:54
Compare
Choose a tag to compare

We have just released version 3.1.0 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:

  • Updated all classes within the UnboundID SCIM 2 SDK to utilize @Nullable and @NotNull annotations for all non-primitive input parameters, member variables, and return values. These annotations are designed to assist with the following:

    • Help provide insight when invoking SCIM SDK library methods
    • Help interface with languages like Kotlin (which has built-in null types for variables)
    • Help applications become less prone to nullability errors.

    Furthermore, the annotations will also appear in the Javadocs. This reflects a similar pattern used by the UnboundID LDAP SDK for Java, though the fully-qualified class names of the annotations are different since they take the form of com.unboundid.scim2.common.annotations.Nullable. For more information on leveraging IDE analysis with these annotations, view the README.

  • Resolved an issue with replace operations that set the value field to an empty array. For example:

    {
      "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
      "Operations": [
        {
          "op": "replace",
          "path": "emails[type eq \"work\"]",
          "value": []
        }
      ]
    }

    When these operations are applied, the SCIM SDK now deletes all matching values of the targeted multi-valued attribute. If the path of the replace operation does not have a filter (type eq "work" in the example above), then the multi-valued attribute will be deleted from the resource.

UnboundID SCIM 2 SDK 3.0.0

03 Oct 23:09
Compare
Choose a tag to compare

We have just released version 3.0.0 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:

  • Removed support for Java 8. The UnboundID SCIM 2 SDK now requires Java 11 or a later release.

  • Migrated javax.* namespaces to use Jakarta EE. Since Oracle has given stewardship of the Java EE project to Eclipse, this change facilitates the usage of these libraries under the Jakarta name, which provides better integration with projects such as Spring Boot 3.0. If your project uses components from JAX-RS or Jersey related to the SCIM SDK, then these references must be updated to match the new method definitions. For example, any code that creates a javax.ws.rs.client.WebTarget before passing it to the SCIM SDK will need to provide a jakarta.ws.rs.client.WebTarget instead. To support this change, the following project dependencies were also upgraded:

    • Updated javax.xml.bind-api to jakarta.xml.bind-api version 4.0.
    • Updated javax.ws.rs-api to jakarta.ws.rs-api version 3.1.0
    • Updated javax.annotation-api to jakarta.annotation-api version 2.1.1
    • Updated Jersey from 2.39.1 to 3.1.3
  • Overhauled many of the class-level Javadocs in the scim2-sdk-common package. This provides better descriptions for SCIM entities, SDK-specific constructs (e.g., ScimResource), and more background on SCIM conventions such as filtering. The new documentation also provides better descriptions for how certain classes in the SDK should be used, such as the Filter class.

  • Added new constructors for some exception types involving the scimType field. This field is empty in many cases, so these new constructors set the scimType value to be null with the goal of simplifying the process of creating exceptions.

  • Added support for patch operations of type ADD that contain a value selection filter in the path, e.g.,
    emails[type eq "work"].value. This type of request is used by some SCIM service providers to append extra data for multi-valued attributes such as emails or addresses.

  • Removed deprecated methods in PatchOperation.java and GenericScimResource.java that utilized multi-valued boolean arrays.

SCIM 2 SDK 2.4.0

28 Jul 21:02
Compare
Choose a tag to compare

We have just released version 2.4.0 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:

  • Fixed an issue with PatchOperations that prevented setting the value field to an empty array. The constructor would previously reject this kind of operation with a BadRequestException.

  • Added a variety of methods for providing multi-valued parameters without needing to wrap the arguments into a List. For example, setting a single email on a UserResource used to be done with user.setEmails(Collections.singletonList(email)), but this can now be shortened to user.setEmails(email). Note that the existing methods are still available and have not been deprecated. Other examples include BaseScimResource.setSchemaUrns(), GenericScimResource.addStringValues(), PatchOperation.addDoubleValues(), and the PatchRequest constructor.

  • Updated the schema URNs field of BaseScimResource to use a LinkedHashSet instead of a generic HashSet. This allows for a SCIM resource with multiple schema URNs to have a predictable order when the resource is deserialized into JSON.

  • Deprecated methods of the form addBooleanValues() and getBooleanValueList() on the GenericScimResource and PatchOperation classes. These methods provided an interface for so-called "multi-valued boolean arrays", but boolean data is always single-valued in nature. Updating a boolean value should always be done with a replace operation type rather than an add.

  • Fixed an issue where AttributeDefinition.toString() would not print the mutability of an attribute.

  • Added a type field to the Member class as defined by RFC 7643 section 8.7.1.

  • Fixed an issue with the attribute definitions of the members field of a GroupResource. The attribute definitions now indicate that the sub-attributes of members are all immutable.

  • Fixed an issue where calling ObjectMapper.copy() would fail for object mappers that were created with JsonUtils.createObjectMapper().

SCIM 2 SDK 2.3.8

17 May 21:28
Compare
Choose a tag to compare

We have just released version 2.3.8 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:

  • Updated the deserialized form of ListResponse objects so that the itemsPerPage and startIndex fields are listed at the top with totalResults. This matches the form of ListResponses shown in RFC 7644.
  • Updated the PatchOperation class to accept operation types where the first letter is capitalized, e.g., "Add". This makes the SDK more permissive of operation types that violate RFC 7644, which is a known problem with Azure Active Directory as a SCIM client.
  • Updated the Jackson and jackson-databind dependencies to 2.14.2.
  • Updated the jersey dependency to 2.39.1 to address a ClassCastException error.

SCIM 2 SDK 2.3.7

08 Sep 16:46
Compare
Choose a tag to compare

Changes In This Release

  • Added ParserOptions class, which may be used to extend the set of characters allowed in filtered
    attribute names.
  • Updated the TestNG dependency to 7.4.0 and corrected its scope from the default 'compile' to 'test'.

SCIM 2 SDK 2.3.6

14 Jun 18:19
Compare
Choose a tag to compare

This release updates the jackson-databind dependency to 2.10.5.1.

SCIM 2 SDK 2.3.5

25 Aug 17:28
Compare
Choose a tag to compare

This release updates the guava version to 29.0-jre which includes the latest known security fixes.

This release and future releases of the SCIM SDK require Java 8 or greater. Java 7 is no longer supported.

SCIM 2 SDK 2.3.4

16 Jun 18:57
Compare
Choose a tag to compare

This release contains a security-related change.

  • Fix possible template variable injection within search parameters and returned resource location URLs.

SCIM 2 SDK 2.3.2

07 Oct 19:51
Compare
Choose a tag to compare

This release updates the jackson-databind version to 2.9.10 which includes the latest known security fixes.