Skip to content

SCIM Responses Contain Unadvertised Schema Extensions #5436

Description

@J-Bu

Summary

The Wire SCIM server returns resource responses containing schema extensions that are not advertised in the ResourceType metadata. This violates the SCIM schema model defined in RFC 7643.

We use python-scim for communication with the SCIM server, which by default is very strict and validates all data against the schemas.

Expected behavior

Per RFC 7643 Section 3 (SCIM Resources), the schemas attribute of a resource response:

"MUST only contain values defined as 'schema' and 'schemaExtensions' for the resource's defined 'resourceType'. Duplicate values MUST NOT be included."

The ResourceType discovery endpoint (e.g., /ResourceTypes) declares which schema extensions are supported for each resource type via the schemaExtensions attribute. For the Wire SCIM server, the User ResourceType response shows:

ResourceType(..., name='User', ..., schema_extensions=None)

This means the User resource type advertises no schema extensions.

Actual behavior

The Wire SCIM server returns User resources containing two schema extensions that are not listed in the ResourceType's schemaExtensions:

{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:wire:scim:schemas:profile:1.0",
    "urn:ietf:params:scim:schemas:extension:wire:1.0:User"
  ],
  "urn:ietf:params:scim:schemas:extension:wire:1.0:User": {},
  "urn:wire:scim:schemas:profile:1.0": {
    "richInfo": {
      "fields": [],
      "version": 0
    }
  },
  ...
}

The extensions urn:wire:scim:schemas:profile:1.0 and urn:ietf:params:scim:schemas:extension:wire:1.0:User are present in the response but not declared in the ResourceType's schemaExtensions array (which is null/None).

Screenshots

N/A

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions