Make identity managing fast, simple and interoperable

Discover SCIM ↓

Identity Management

What we speak about and in which environment. We must agree on some different problematics that exists to better understand why we use SCIM.

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 ?

illustration of losing data

Our environment

Our digital work environment is composed of many applications and web services. We want a seamless user experience for our free software based collaboration platform. With a Single Sign-on (SSO) system users get a unified login and logout experience but there is a catch.

Our 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 do we use SCIM ?

Our focus is around collaborative tooling. Thus, information to provision are only email, first name, last name and display name for users and name and membership for group.

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). In SCIM architecture, there is (only) the Client, making the HTTP calls and the Server receiving them.

Our use of SCIM Our chosen architecture is as follows : a SCIM Client collocated with the Identity Provider will reflect changes by calling all SCIM Server collocated with each application.

What we need is 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 is both a SCIM client and server ; client when sending requests to apps and server when receiving requests from management UI.

How it works ?

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

In our scenario when we want to CRUD a user in the Identity Provider, we can therefore use the standard SCIM API to do so.

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 this application (and this application should be a SCIM Server in this scenario).

In essence

SCIM compliant open source Web SSO providers and, Applications with SCIM API for user provisioning.

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
LDAP LDAP & SSO SSO SSO & 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