Releases: Captain-P-Goldfish/SCIM-SDK
Releases · Captain-P-Goldfish/SCIM-SDK
1.26.0
SCIM Server
Bug Fixes
- Added the missing
primary
-attribute to theauthenticationSchemes
-parameter of theServiceProviderConfig
(#748) - Fixed a bug that caused attributes to be removed from a resource if a PATCH-request contained an empty object with an add-operation.
- Fixed a bug that caused an error if the ETag was set manually for patch-requests
SCIM Client
Changes
- The
ScimClientConfig
object was extended to accept preconfigured http-client-builders. This is useful in cases in which you want to use system-tracing which is e.g. prepared by your underlying framework like spring-boot.
Maintenance
- Updated dependencies
1.25.1
Bug Fixes
- Fix comparison for extensions in class
ResourceComparator
and enhance performance slightly
Maintenance
- Update dependencies
1.25.0
- Updated dependencies
SCIM Server
Changes
- Fixed the
SearchRequest
-object that does accept the attributes-list now as comma separated list and as array. RFC7644 defines it as list of attributes and I added it as comma separated list before.
Bug Fixes
- Fixed a bug that caused errors on empty nested objects in requests and responses
- Fixed a bug that caused specfiic attributes to be returned that should not if the
attributes
-parameter was used in the request- Additional attributes were returned if the attribute-names were similar e.g.
name
anduserName
.
- Additional attributes were returned if the attribute-names were similar e.g.
- The
MsAzureComplexSimpleValueWorkaround
was fixed. It did not behave correctly in some usecases. Check #686 for more details.
SCIM Client
Bug Fixes
- Fixed a bug, that caused an infinite loop in the
getAll
method if the remote-provider omits the response parametersstartIndex
anditemsPerPage
1.24.0
SCIM Server
Changes
- Unified
PatchConfig
-parameter names - The Implementation of the MsAzureFilterWorkaround was changed. The changes are described in #680 and implemented in #681
Features
- The API does now also support boolean values sent as string with any case. Before the values were checked case-sensitive with "true" and "false". Now values like "False" and "True" are also supported.
Bug Fixes
- Fixed a Bug that caused a NullPointerException if an unknown filter-operator was used in patch requests
- A NullPointerException was prevented in case that the MsAzureComplexValueWorkaround was active and empty values were added to the operation
- Prevented a NullPointerException that occured if no patch-request body was sent in a patch-request
1.23.0
SCIM Server
Features
- Allowing lenient http-header validation for Content-Type
application/json
. Thx to @haster
Bug Fixes
- Add id to resource before the PATCH-method is called. This is the same as it was before the PATCH-implementation was rebuilt.
- Fix parsing of complex-types in patch-requests if the complex-type was sent as string-attribute instead as an object. This is actually a fallback-feature for being less error-prone in patch-requests.
SCIM Client
Features
- Metadata endpoints are now called by using the GET-method instead of POST-method. Providers like AWS do not support POST on the metadata endpoints
1.22.0
SCIM Server
Features
- MsAzure sub-attribute-path-references in resource-patch-requests are now supported natively and do not require the workaround-implementation anymore.
- It is now possible to implement and inject custom-workarounds for the patch-implementation if needed. see: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Patching-resources#adding-and-modifying-custom-patch-workarounds-since-1220
- Patch is by default getting the current state of the resource from the
ResourceHandler.getResource(...)
-method and is passing the patched-result toResourceHandler.updateResource(...)
. It is now possible to handle the patch-operations manually. This can be used to reduce the overall payload on the requests and reduce problems with concurrent-patch-requests. see: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Patching-resources#catch-patch-operations-and-handle-them-manually-since-1220 - You can now access the complete attribute-register directly from the
ResourceType
object. Several attribute registers were added:the same attribute-registers are available from the@Getter(AccessLevel.PUBLIC) private Map<SchemaAttribute, List<SchemaAttribute>> complexRegister = new HashMap<>(); @Getter(AccessLevel.PUBLIC) private Map<SchemaAttribute, List<SchemaAttribute>> multivaluedComplexRegister = new HashMap<>(); @Getter(AccessLevel.PUBLIC) private List<SchemaAttribute> readOnlyAttributeRegister = new ArrayList<>(); @Getter(AccessLevel.PUBLIC) private List<SchemaAttribute> immutableAttributeRegister = new ArrayList<>();
Schema
-object - Introduced an interceptor concept with the help of @alexandertokarev. This might e.g. be used to add a partial transactional concept to your implementation if you do not want to make the whole request transactional.
Change of behaviour
- Patch Operations on readOnly-attributes will no longer fail but will be ignored. They will not be passed to the patchHandler anymore. This applies also to sub-attributes of readOnly complex-attributes. So if the sub-attribute has a mutability of readWrite, the parent-attribute is readOnly though the patch-operation is ignored.
Bug Fixes
- Fixed #335
- an error was fixed that caused a
BadRequestException
if a multivalued-complex-attribute was patched with thereplace
operation that marked a new element as primary.
SCIM Client
Features
- A
MetaConfigLoaderBuilder
was added. It is now possible to callscimRequestBuilder.loadMetaConfiguration()
orscimRequestBuilder.loadMetaConfiguration(MetaConfigRequestDetails metaConfigLoaderDetails)
to retrieve all meta-data from the discovery-endpoints of the remote-provider.
Change of behaviour
- The
getAll
-method of theListBuilder
will now correctly stop to retrieve resources when the configuredcount
-limit is reached. If you set a count-value that exceeds themaxCount
value of the remote provider thegetAll
method will continue to send get-requests until the number of configured resources is retrieved as you have configured it.
Bug Fixes
- Fixed a possible
StackOverflow
if thegetAll
-method of theListBuilder
was called. - Fixed lost
BulkResponse
-operations due to a concurrency conflict with handling lists. This did only occur if a lot of bulk-requests were sent with the parameterrunSplittedRequestsParallel=true
. From my experience of operations splitted into 6 parallel requests 4 to 6BulkResponseOperations
were lost. So we have had 100 operations and got 94 to 96 in the result-list. - Patch requests will now also accept responseCode
204
.
Common Modul
Feature
- A new implementation was added to compare
ResourceNodes
based on specific criteria. The classResourceComparator
can be used to compareResourceNodes
partially by adding theSchemaAttritbutes
that should be compared or that should not be compared. You can choose if the given attributes should be included or excluded during comparison.
1.21.1
Bug Fixes
- Added missing constructor parameters for new attributes on
ServiceProvider
-object (see release notes of 1.21.0) - The new attributes will be set to true by default which is basically a breaking change. (Was already intended for 1.21.0)
1.21.0
Features server
- Support for usage of schema URIs with the
attributes
andexcludedAttributes
parameter (see https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Additional-Features#the-attributes-and-excludedattributes-parameter). - SCIM defines the
attributes
andexcludedAttributes
parameter as mutually exclusive. This is no longer the case for the SCIM-SDK as for new feature support of schema URIs on these attributes (see https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Additional-Features#the-attributes-and-excludedattributes-parameter). - New configuration parameters on the
ServiceProvider
object- ignoreRequiredAttributesOnResponse
- As the name lets suggest: required attributes will not cause errors if missing in a response
- ignoreRequiredExtensionsOnResponse
- As the name lets suggest: required extensions will not cause errors if missing in a response
- ignoreRequiredAttributesOnResponse
1.20.0
Features server
- Patch remove-operations for simple-arrays do support the following filter now to remove specific values:
myArray[value eq "my-value"]
. The valuemy-value
will then be remove from the simple-array attribute. - SchemaAttributes do now support default-values. The
ServiceProvider
-object can be configured to tell the SCIM-SDK if the default values should be set in a request or in a response or both. See the wiki for more details.
Bug fixes server
- Fixed an error with simple bulkdId fields that caused an error when trying to create several resources in a single request where a bulkId-reference field was having a fixed id instead of a bulkId-reference
1.19.0
Features server
- Added support for MsAzures special filter-expressions like
filter=emails[primary eq true].value eq "my@email.de"
. The part behind the brackets is not defined in SCIM like this but this type of expression is used by MsAzure. This expression is now resolved to a logical and-operation in theFilterNode
s. - Add a new configuration-attribute that allows to toggle another workaround for MsAzure. see #541
- Add a new configuration-attribute that allows to toggle the error-behaviour for invalid-path patch-requests. If an attribute referenced in a patch-request does not exist an error is thrown as defined by RFC7644. The configuration option will prevent the error so that the attribute is simply ignored and not handled. see #539
- It is now possible to implement custom-validators for the response. The abstract
ResourceHandler
-class does now have a predefined methodgetResponseValidator(...)
that can be overridden.
Bug Fixes server
- Fixed a Bug with binary nodes that occured in schema-validation and when reading the binary node.
- Fixed a Bug that did not throw an error on resource-filtering if an ambigious filter-attribute was used without its fully qualified attribute-name
Features client
- Extended the ScimRequestBuilder by a method to load the complete ServiceProvider configuration. This includes [ServiceProviderConfig, ResourceTypes, Schemas]. use
scimRequestBuilder.loadMetaConfiguration()
- Added a new method to the ListRequestBuilder that allows to load all resources from the server with a single method-call
scimRequestBuilder().list(...).get().getAll()
orscimRequestBuilder().list(...).post().getAll()
Bug Fixes client
- Fixed a Bug that prevented to get the data of a schema-extension from the ServiceProvider if a resource-type-configuration was loaded.