SCIM (System for Cross-domain Identity Management)

SCIM (System for Cross-domain Identity Management) (Bonus): A standard for automating the exchange of user identity information between identity domains or IT systems.

Definition: SCIM is a standard protocol designed to automate the exchange of user identity information between identity domains or IT systems. It simplifies the management of user identities in cloud-based applications and services by providing a consistent and standardized way to create, read, update, and delete user identities.

Key Components of SCIM

  1. SCIM Client: The system or application that makes requests to the SCIM server to manage user identities.
  2. SCIM Server: The system or application that receives and processes SCIM requests, typically providing user management functions.

SCIM Workflow

  1. User Provisioning: Automates the creation of user accounts in various applications.
    • Example: Creating a new employee account in a company’s HR system automatically provisions the user in the organization’s email system, CRM, and other services.
  2. User De-provisioning: Automatically removes user accounts when they are no longer needed.
    • Example: When an employee leaves the company, their access to all associated applications is automatically revoked.
  3. User Updates: Synchronizes changes to user information across systems.
    • Example: Updating an employee’s role or department in the HR system automatically updates their permissions in other integrated applications.

SCIM Operations

SCIM defines a set of standard operations that can be performed on resources (users, groups, etc.):

  • Create: Adds a new resource.
  • Read: Retrieves information about a resource.
  • Update: Modifies an existing resource.
  • Delete: Removes a resource.

SCIM Endpoints

SCIM uses RESTful API endpoints to manage resources:

  • /Users: Manages user resources.
  • /Groups: Manages group resources.
  • /Schemas: Provides information about supported resource schemas.
  • /ServiceProviderConfig: Provides configuration details for the SCIM service.

SCIM Example

A common SCIM request is creating a new user. Here’s an example of a SCIM API request to create a user:

Request:

http                                                                                                                                       Copy code

POST /Users HTTP/1.1

Host: example.com

Content-Type: application/json

Authorization: Bearer access_token

{

  “schemas”: [“urn:ietf:params:scim:schemas:core:2.0:User”],

  “userName”: “bjensen”,

  “name”: {

    “givenName”: “Barbara”,

    “familyName”: “Jensen”

  },

  “emails”: [

    {

      “value”: “[email protected]”,

      “type”: “work”,

      “primary”: true

    }

  ]

}

Response:

http

Copy code

HTTP/1.1 201 Created

Content-Type: application/json

{

  “schemas”: [“urn:ietf:params:scim:schemas:core:2.0:User”],

  “id”: “2819c223-7f76-453a-919d-413861904646”,

  “userName”: “bjensen”,

  “name”: {

    “givenName”: “Barbara”,

    “familyName”: “Jensen”

  },

  “emails”: [

    {

      “value”: “[email protected]”,

      “type”: “work”,

      “primary”: true

    }

  ]

}

Benefits of SCIM

  • Standardization: Provides a consistent way to manage user identities across different systems.
  • Automation: Reduces the manual effort required for user provisioning and de-provisioning.
  • Interoperability: Ensures compatibility between various identity management systems and applications.
  • Efficiency: Streamlines identity management processes, reducing errors and improving security.

SCIM vs. SAML

  • SCIM: Focuses on provisioning, managing, and synchronizing user identities across systems.
  • SAML: Focuses on exchanging authentication and authorization data for single sign-on (SSO) purposes.

Summary

SCIM is a powerful standard for automating the exchange and management of user identity information across multiple domains and IT systems. It streamlines user provisioning, de-provisioning, and updates, enhancing efficiency and security in managing user identities.