Skip to Content

Protocole SCIM 2.0

Quand une entreprise intègre 500 employés, créer manuellement les comptes dans chaque application n’est pas viable. Quand un employé quitte, oublier de désactiver son compte dans une application est un risque de sécurité réel.

SCIM (System for Cross-domain Identity Management) est le protocole standard (RFC 7643 + RFC 7644) pour le provisionnement automatique des utilisateurs. Ton Identity Provider d’entreprise (Okta, Azure AD, OneLogin, etc.) devient la source de vérité pour les identités — Auris se synchronise automatiquement.

Ressources SCIM

Ressource Utilisateur

{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "externalId": "701984", "userName": "[email protected]", "name": { "formatted": "Alice Dupont", "familyName": "Dupont", "givenName": "Alice" }, "emails": [ { "value": "[email protected]", "type": "work", "primary": true } ], "active": true, "title": "Ingénieur Senior", "department": "Engineering" }

Ressource Groupe

{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "e9e30dba-f08f-4109-8486-d5c6a331660a", "displayName": "Engineering", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "display": "Alice Dupont" } ] }

Opérations SCIM

Créer un Utilisateur

POST /scim/v2/Users Authorization: Bearer SCIM_TOKEN Content-Type: application/scim+json { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "[email protected]", "name": { "givenName": "Alice", "familyName": "Dupont" }, "emails": [{ "value": "[email protected]", "primary": true }], "active": true }

Réponse : 201 Created avec l’objet utilisateur complet incluant l’id assigné par Auris.

Mise à Jour Partielle (PATCH)

PATCH /scim/v2/Users/2819c223-7f76-453a-919d-413861904646 Authorization: Bearer SCIM_TOKEN Content-Type: application/scim+json { "schemas": ["urn:ietf:params:scim:schemas:api:messages:2.0:PatchOp"], "Operations": [ { "op": "replace", "path": "active", "value": false } ] }

Le PATCH est idempotent — appliquer le même PATCH plusieurs fois produit le même résultat.

Supprimer un Utilisateur

DELETE /scim/v2/Users/2819c223-7f76-453a-919d-413861904646 Authorization: Bearer SCIM_TOKEN

Réponse : 204 No Content. La suppression SCIM effectue un soft-disable — le compte est désactivé mais pas définitivement supprimé de la base de données (utile pour les pistes d’audit).

Filtrage

SCIM supporte le filtrage avec une syntaxe d’expression structurée :

GET /scim/v2/Users?filter=email eq "[email protected]" GET /scim/v2/Users?filter=active eq true GET /scim/v2/Users?filter=name.familyName sw "Dup" GET /scim/v2/Users?filter=department eq "Engineering" and active eq true

Opérateurs supportés :

OpérateurSignificationExemple
eqÉgalactive eq true
neDifférentactive ne false
coContientemail co "example.com"
swCommence paruserName sw "alice"
ewTermine paremail ew "@example.com"
prPrésent (non null)phoneNumbers pr
gtSupérieur àmeta.lastModified gt "2024-01-01"
ltInférieur àmeta.created lt "2024-12-31"

Les filtres composites utilisent and, or et les parenthèses pour regrouper.

Pagination

Pour les tenants avec de nombreux utilisateurs, la pagination est obligatoire :

GET /scim/v2/Users?startIndex=1&count=100

La réponse inclut :

  • startIndex : Index de départ 1-based
  • itemsPerPage : Nombre d’items dans cette page
  • totalResults : Total des ressources correspondantes
  • Resources : Array des objets sur cette page

La taille maximum de page est 100. Les IdPs effectuent la pagination automatiquement lors de la synchronisation initiale.

Authentification et Sécurité

SCIM dans Auris utilise des Bearer tokens dédiés — différents des tokens OAuth de l’application :

  • Générés dans Administration → Provisionnement → SCIM → Nouveau Token
  • Stockés en interne comme hash SHA-256 (jamais en clair après création)
  • Scopés au tenant — un token ne peut pas accéder aux données d’autres tenants
  • Toutes les opérations SCIM sont journalisées dans l’audit log avec le token utilisé

Fais pivoter les tokens SCIM trimestriellement. Ne jamais committer les tokens SCIM dans le code source ou les fichiers de configuration versionnés. Utilise des variables d’environnement ou des gestionnaires de secrets.

IP Allowlisting : Pour les déploiements à haute sécurité, tu peux restreindre quelles IP peuvent faire des requêtes SCIM dans Administration → Provisionnement → SCIM → Paramètres.

Double Écriture

Quand Auris traite une opération SCIM, il écrit sur deux systèmes :

  1. Base de données Auris (PostgreSQL via Prisma) : Enregistrement TenantUser avec scimExternalId et scimUserName
  2. Realm Keycloak : Utilisateur realm avec attributes SCIM mappés

Les deux écritures doivent réussir — si l’une échoue, l’autre est rollback. Cela garantit la cohérence entre les stores de données.

Opérations Bulk

Pour la synchronisation initiale ou les grandes mises à jour, les opérations bulk réduisent les aller-retours réseau :

POST /scim/v2/Bulk Authorization: Bearer SCIM_TOKEN Content-Type: application/scim+json { "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"], "Operations": [ { "method": "POST", "path": "/Users", "bulkId": "user-alice", "data": { "userName": "[email protected]", ... } }, { "method": "POST", "path": "/Users", "bulkId": "user-bob", "data": { "userName": "[email protected]", ... } } ] }

Maximum 100 opérations par requête bulk. Chaque opération est traitée indépendamment — l’échec d’une n’arrête pas les autres.

SCIM vs Autres Méthodes de Provisionnement

SCIMManuelJITSync LDAP
AutomatisationComplèteAucunePartiellePartielle
DéprovisionnementImmédiatManuelNonDépend de la fréquence de sync
StandardRFC 7643/7644N/AN/ARFC 4511
Support IdPUniversalN/ALimitéEnterprise uniquement
Richesse des donnéesComplèteSelon l’adminClaims token uniquementSelon la config LDAP

Concepts Associés

  • Multi-Tenancy — Comment les tenants isolent les données de provisionnement
  • Hosted Login — SCIM est complémentaire — provisionnement + login
  • OAuth 2.0 & OIDC — Les tokens SCIM sont distincts des tokens OAuth
  • MFA Adaptatif — Les utilisateurs SCIM-provisionnés héritent des politiques de sécurité du tenant