Make identity managing fast, simple and interoperable

Discover SCIM ↓

Identity Management

A quick overview of some different issues that exist when discussing identity management, and in which environments using SCIM could be relevant.

Illustation of the basics of identity magagment

Authentication

Who is this user ?

Authorization

Is this user allowed to access this resource ?

Storage

Where are user’s identity & credentials stored?

Provisioning

How to manage & transfer user’s identity ?

Among all these identity management concepts, SCIM is a matter of provisioning ; it concerns how information linked to an identity is transferred between different apps.

illustration of losing data

SCIM environement

Because SCIM tackle the question of provisioning, one of best the identity management environments where SCIM is relevant is an environment composed of many apps or services that are not well integrated natively and are used by many users.

To better understand, let’s consider the use case of a hosting provider that develops a collaboration platform based on different free software.

The digital work environment is then composed of many applications and web services used by different users. These users want a seamless user experience across the different apps.

With a Single Sign-on (SSO) system, users get a unified login and logout experience but there is a catch.

The problem

Traditional SSO protocols like OpenID Connect do not support syncing user profiles across applications. That’s means :

  • users are not created by default in all apps (only after they have logged in at least once)
  • no mechanisms to propagate the deletion of users
  • So its not GDPR compliant (by default)

In essence

Current existing protocols are difficult to implement or/and to use or are custom for specific use case then non-standardized.

The solution, SCIM

SCIM, for System for Cross-domain Identity Management are specifications designed to make managing user identities in cloud-based applications and services easier.

Scim diagram

Quick overview

The SCIM protocol is an application-level protocol for provisioning and managing identity data specified through SCIM schemas. Its intent is to reduce the cost and complexity of user management operations.

  • A common existing user schema and deployments
  • Extension models
  • Placing specific emphasis on simplicity of development and integration
  • Applying existing models (authentication, authorization, and privacy)
  • Binding documents to provide patterns for exchanging this schema using standard protocols
  • Easily improve GDPR compliance
  • Consolidate the user experience across multiple FOSS applications as one platform

Resource based

In SCIM 2.0 a Resource is the common denominator and all SCIM objects are derived from it.

Rest API

An api to manipulate resources, from patching a specific attribute to doing massive bulk updates.

Ends points

SCIM provides three end points to simplify interoperability and discover features and details.

See the official spec ↗

In essence

Make it fast, cheap, and easy to move users in to, out of, and around the cloud.

How to use SCIM?

An opinion on using SCIM to provide information such as mail, first name, last name, group… accross different application with an Identity Provider.

Scim diagram

SCIM Client and Server

While SCIM is a protocol for provisioning and managing identity, there isn’t really a concept of Identity Provider (IdP) within its architecture. Instead, SCIM architecture consists (only) of a Client which makes HTTP calls, and a Server, which receives them.

An opinion on SCIM use A possible architecture could be as follows : a SCIM Client collocated with the Identity Provider reflects changes by calling all SCIM Servers collocated with each application.

With this architecture, there is a need for interoperability at 2 levels :

  • between the user management UI and the IdP (the database where identity are stored)
  • and between the IdP and the applications.

Thus, the IdP acts as both a SCIM client and server ; as a client when sending requests to apps and as a server when receiving requests from management UI.

How does it work ?

With SCIM protocol, clients can create, read, update, delete (CRUD) users and groups from a server.

In this scenario the standard SCIM API is used each time an user should be CRUDed in the Identity Provider.

And, when a resource is modified in the user database of the Identity Provider, the event is propagated to the configured applications. In this case the IdP becomes a client for these applications (which act as a SCIM Server in this scenario).

In essence

SCIM compliant open source Web SSO providers along with applications that support SCIM API for user provisioning could provide a seamless user experience.

Why is SCIM better ?

Differences between several centralized user management protocols in a world of web application hosting that show SCIM is an upgrade.

Others management protocols

With this LDAP approach everything is centralized (except authorization). LDAP diagram Everything speaks the LDAP protocol langage. Identities are stored in an LDAP directory, which is provisioned via LDAP protocol. Authentication is done by the application that asks the user’s credentials and validates them against the directory via LDAP protocol.
This architecture tackles the two main drawbacks of the only LDAP approach : the missing single sign-on and the security vulnerability. Authentication is delegated to other web protocols (like OAuth, OIDC or SAML). This way, the user logs in only once to the identity provider. LDAP with SSO diagram
On modern web infrastructure, LDAP started to be abandoned because loose provisioning can also be done via SSO protocols. SSO only diagram
SCIM solve the remaining problems via a simple standard web api. This infrastructure is event driven, a provisioning action on the IdP is quickly passed on all applications. SSO with SCIM diagram
LDAPLDAP & SSOSSOSSO & SCIM
Easy to implement
Mature but old and difficult

Mature but old and difficult

Simple and web native, but non-standard IdP

Cli or UI could be used on IdP or on apps
Many implementations
Not a lot of implementations yet
Single sign-on
User must sign-on each application
No trust issues
Expose user’s credentials to each application

Zero trust in applications

Zero trust in applications
Scalable provisioning
By diffing, each app reads all and compares it

By diffing, each app reads all and compares it

No diffing, modern storage, SQL database can be used

Real time atomic provisioning
Scalable provisioning
Only when apps trigger it or when the user logs in

Only when apps trigger it or when the user logs in

No way to remove a user from the application
GDPR Compliant