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_TOKENRé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 trueOpérateurs supportés :
| Opérateur | Signification | Exemple |
|---|---|---|
eq | Égal | active eq true |
ne | Différent | active ne false |
co | Contient | email co "example.com" |
sw | Commence par | userName sw "alice" |
ew | Termine par | email ew "@example.com" |
pr | Présent (non null) | phoneNumbers pr |
gt | Supérieur à | meta.lastModified gt "2024-01-01" |
lt | Infé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=100La réponse inclut :
startIndex: Index de départ 1-baseditemsPerPage: Nombre d’items dans cette pagetotalResults: Total des ressources correspondantesResources: 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 :
- Base de données Auris (PostgreSQL via Prisma) : Enregistrement
TenantUseravecscimExternalIdetscimUserName - 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
| SCIM | Manuel | JIT | Sync LDAP | |
|---|---|---|---|---|
| Automatisation | Complète | Aucune | Partielle | Partielle |
| Déprovisionnement | Immédiat | Manuel | Non | Dépend de la fréquence de sync |
| Standard | RFC 7643/7644 | N/A | N/A | RFC 4511 |
| Support IdP | Universal | N/A | Limité | Enterprise uniquement |
| Richesse des données | Complète | Selon l’admin | Claims token uniquement | Selon 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