Conversation
The in-memory backend derived them from the registered schemas. It now reads the Uniqueness annotations of the model, extensions included. A missing unique value no longer crashes the check nor clashes, and case-insensitive values are compared with Unicode case folding.
meta.resourceType carries the name of the resource type, per RFC 7643 §3.1, while the in-memory backend compared it with the resource type id. With an id differing from the name, created resources could not be read, searched or deleted, and their uniqueness was never checked.
The sort moves to scim2-models, which reads the sort key the way the filters do: case exactness from the schema, extension attributes, the primary entry of a multi-valued attribute, and missing values last.
scim2-models now provides ScimProvider, the description of a SCIM service. The WSGI application takes another name to avoid confusing the two.
The backend no longer knows the ScimProvider: its methods take the ResourceType instead of its id, and SCIMApplication holds the provider.
If-Match is evaluated first and its failure answers 412 whatever the method, a GET no longer answers 304 to it. A failed If-None-Match answers 304 to a GET and 412 otherwise. DELETE now honours both headers, and a 304 carries the ETag.
RFC 7643 erratum 8279 makes a server-unique value unique among the resources using the schema that declares the attribute, whatever their resource type. Two resource types serving the same schema, such as /Users and /Admins, keep disjoint resources but can no longer hold the same userName.
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.
scim2-server now describes the service with the
ScimProviderof scim2-models instead of its own registry, and derives its behaviour from theServiceProviderConfigit publishes.filter.maxResults(1000 by default) instead of a hardcoded 50./Bulkanswers 501 instead of 500.etag.supporteddrives theETagheader,meta.versionand the conditional headers, which follow the evaluation order of RFC 7232./Usersand/Admins.--service-provider-config.