
Managing Users With SCIM
On this page
System for Cross-domain Identity Management (SCIM) is a REST-based protocol used to perform user management actions across multiple IT systems or domains. This article will cover the most common actions performed with SCIM: Create, Read, Update and Delete (CRUD). General details on SCIM and its use is outlined in User Provisioning With SCIM.
Although this article contains examples of user resources, the same concepts could apply to other SCIM resources as well.
Curity configuration
The User management with SCIM article outlines how to configure the Curity Identity Server to enable the SCIM service.
Schema
SCIM defines a minimum attribute-based core schema. Each attribute is defined by its type, mutability, cardinality, and returnability. It is up to the recipient of the SCIM request to validate the request against the appropriate schema. For example, a SCIM server receiving a request to modify an existing user would validate that request against the mutability schema for a user object. The SCIM specification provides a minimal schema for users, and the specification also provides details on how to extend the schema as needed.
Attributes
A SCIM Resource is defined by a collection of attributes typically organized by resource type, such as User. The attributes are defined by the schemas discussed above. They can also be defined by more than one schema, such as when a core user schema is extended to create a custom enterprise schema.
Attributes are case insensitive and are typically camel-cased (e.g., userName).
The following attribute data types are supported:
- String
- Boolean
- Decimal
- Integer
- DateTime
- Binary
- Reference
- Complex
The SCIM Protocol
The SCIM Core Schema defines the attributes, resources, and overall schema. The SCIM Protocol specification defines the protocol and specification of CRUD actions. Let's explore these CRUD actions, one by one.
Create
In SCIM, a user is created by submitting a POST request to the SCIM endpoint. Below is a simple request body that will create a user with a few attributes. Note that this request defines which schema will be used for the resource that is to be created. The schema definition is mandatory.
POST /um/admin/Users HTTP/1.1Host: idsvr.example.comAccept: application/scim+jsonAuthorization: Bearer ec2979e4-f766-4c79-85f9-58f6c72e224fContent-Type: application/scim+json