Provisioning SCIM 2.0
SCIM (System for Cross-domain Identity Management) est un protocole standardisé (RFC 7643/7644) qui permet à un fournisseur d’identité (IdP) externe d’envoyer des événements du cycle de vie des utilisateurs — création, mise à jour, désactivation, suppression — à Auris automatiquement. Au lieu de gérer manuellement les utilisateurs dans deux systèmes, l’IdP devient la source de vérité et Auris reflète son état en temps quasi réel.
Auris implémente SCIM 2.0 et est compatible avec tout IdP supportant le standard, incluant Okta, Microsoft Azure AD (Entra ID), OneLogin, JumpCloud, Google Workspace (via un bridge SCIM tiers) et Ping Identity.
Comment Fonctionne SCIM
Quand SCIM est configuré, l’IdP agit comme client SCIM et Auris agit comme serveur SCIM (service provider).
Le cycle de vie typique :
- Un nouvel employé est ajouté dans Okta (ou un autre IdP).
- Okta envoie une requête
POST /scim/v2/Usersà Auris avec les attributs de l’employé. - Auris crée l’utilisateur à la fois dans sa base de données et dans le realm Keycloak sous-jacent.
- Quand l’employé est désactivé dans Okta (ex. après sa démission), Okta envoie un
PATCH /scim/v2/Users/[id]avec"active": false. - Auris désactive l’utilisateur et invalide toutes les sessions actives.
- Quand l’enregistrement de l’employé est supprimé dans Okta, Okta envoie
DELETE /scim/v2/Users/[id]. - Auris supprime temporairement l’utilisateur.
Cela maintient Auris synchronisé sans aucune intervention manuelle des administrateurs.
Configuration d’une Connexion SCIM
Crée une connexion SCIM dans Auris
Dans la Console Admin, va dans Paramètres → Connexions SCIM et clique “Nouvelle Connexion”.
Chaque connexion génère :
- SCIM Base URL — L’endpoint que ton IdP appellera. Format :
https://auth.votreapp.com/scim/v2 - Bearer Token — Un secret avec le préfixe
scim_utilisé pour authentifier les requêtes de l’IdP. Copie ce token immédiatement — il n’est affiché qu’une seule fois.
Tu peux aussi créer une connexion via l’API :
/api/scim/connectionsRequires: manage:scim_connectionsCrée une nouvelle connexion SCIM et retourne le bearer token. Le token n’est pas stocké en clair et ne peut pas être récupéré après la création.
{
"name": "Okta Production",
"keycloakRealm": "votre-realm"
}Configure ton IdP
Dans la configuration SCIM de ton fournisseur d’identité, saisis :
- SCIM Connector Base URL :
https://auth.votreapp.com/scim/v2 - Unique Identifier Field for Users :
userName - Authentication Mode : HTTP Header
- Authorization :
Bearer scim_...
Les étapes exactes diffèrent par IdP. Consulte la documentation de configuration SCIM de ton IdP pour les noms de champs spécifiques.
Okta
Dans Okta, va dans Applications → [Ton App] → Provisioning → Integration. Active “Enable API integration” et saisis la base URL et le token. Sous “To App”, active Create, Update et Deactivate.
Vérifie la connexion
Dans la Console Auris, utilise le bouton “Tester la Connexion” sur la carte de la connexion SCIM. Cela envoie une requête de test pour vérifier qu’Auris peut recevoir des requêtes SCIM authentifiées.
Tu peux aussi tester la connectivité depuis ton IdP — la plupart des IdP ont un bouton “Test Connection” ou “Verify” intégré dans la configuration SCIM.
Endpoints SCIM
Tous les endpoints SCIM sont montés sous /scim/v2. Ils nécessitent un token Bearer correspondant à une connexion SCIM active. Le Content-Type: application/scim+json SCIM standard est supporté.
/scim/v2/UsersListe les utilisateurs. Supporte le filtrage SCIM, la pagination (startIndex, count) et la sélection des attributs (attributes, excludedAttributes).
/scim/v2/UsersCrée un utilisateur. Auris mappe les attributs SCIM aux champs utilisateur d’Auris et crée l’enregistrement à la fois dans Auris et dans Keycloak.
/scim/v2/Users/[id]Récupère un seul utilisateur par ID SCIM externe.
/scim/v2/Users/[id]Remplace tous les attributs d’un utilisateur. Les champs non inclus dans le corps de la requête sont effacés.
/scim/v2/Users/[id]Met à jour partiellement un utilisateur en utilisant les opérations de patch SCIM. Supporte les opérations add, remove et replace. Utilisé par les IdP pour mettre à jour des attributs individuels ou définir active: false pour désactiver un utilisateur.
/scim/v2/Users/[id]Désactive et supprime temporairement un utilisateur. Les sessions sont révoquées immédiatement.
/scim/v2/BulkTraite jusqu’à 100 opérations SCIM dans une seule requête. Chaque opération est traitée indépendamment — l’échec d’une opération n’affecte pas les autres.
Les endpoints SCIM s’authentifient via le bearer token de la connexion, pas via un JWT utilisateur. La permission manage:scim_connections contrôle l’accès à l’API de management d’Auris pour les connexions SCIM — les endpoints du protocole SCIM lui-même s’authentifient uniquement via le bearer token.
Mapping des Attributs
Par défaut, Auris applique des mappages standard d’attributs SCIM vers les champs Auris. Tu peux personnaliser ces mappages par connexion dans l’onglet Mappages de la Console.
Mappages par Défaut
| Attribut SCIM | Champ Auris | Notes |
|---|---|---|
userName | username | Aussi stocké comme scimUserName pour la déduplication |
emails[0].value (primary) | email | |
name.givenName | firstName | |
name.familyName | lastName | |
active | enabled | false active la révocation immédiate des sessions |
externalId | scimExternalId | Stocké pour le lien stable cross-système |
Mappages Personnalisés
Les mappages d’attributs personnalisés permettent de mapper des attributs SCIM non standard aux champs utilisateur d’Auris. Par exemple, si ton IdP envoie urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department et que tu veux le stocker dans metadata.department.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsListe tous les mappages d’attributs pour une connexion.
/api/scim/connections/[id]/mappingsRequires: manage:scim_connectionsCrée un mappage d’attributs personnalisé.
{
"scimAttribute": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department",
"aurisAttribute": "metadata.department",
"direction": "INBOUND",
"isActive": true
}Directions des mappages :
| Direction | Signification |
|---|---|
INBOUND | Attribut SCIM → Champ Auris (utilisé pendant le provisioning) |
OUTBOUND | Champ Auris → Attribut SCIM (utilisé quand Auris est interrogé par l’IdP) |
BIDIRECTIONAL | Les deux directions |
Support des Filtres
Auris implémente le filtrage SCIM RFC 7644 §3.4.2.2. La plupart des IdP utilisent les filtres pour rechercher les utilisateurs avant de les créer ou les mettre à jour.
Opérateurs supportés :
| Opérateur | Signification |
|---|---|
eq | Égal |
ne | Différent |
co | Contient |
sw | Commence par |
ew | Se termine par |
gt | Supérieur à |
lt | Inférieur à |
ge | Supérieur ou égal |
le | Inférieur ou égal |
pr | L’attribut est présent (non null) |
Exemples de filtres :
# Trouve un utilisateur par e-mail
/scim/v2/Users?filter=emails eq "[email protected]"
# Trouve par userName
/scim/v2/Users?filter=userName eq "alice"
# Trouve les utilisateurs actifs dans un département (avec l'extension schema enterprise)
/scim/v2/Users?filter=active eq true and urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department eq "engineering"Les filtres supportent les combinateurs and/or et les parenthèses pour le regroupement. Les chemins d’attributs en notation pointée (ex. name.givenName) sont résolus correctement.
Statistiques de Synchronisation
La Console fournit un résumé de l’activité de synchronisation SCIM par connexion, visible dans l’onglet Statistiques de chaque page de détail de connexion.
/api/scim/connections/[id]/statsRequires: manage:scim_connectionsRetourne les compteurs de synchronisation ventilés par période (24h, 7j, 30j) et type d’opération (créations, mises à jour, suppressions, erreurs).
Réponse :
{
"periods": {
"24h": { "created": 12, "updated": 8, "deleted": 1, "errors": 0 },
"7d": { "created": 45, "updated": 33, "deleted": 4, "errors": 2 },
"30d": { "created": 180, "updated": 112, "deleted": 9, "errors": 5 }
}
}Opérations Bulk
L’endpoint SCIM Bulk permet à un IdP d’envoyer jusqu’à 100 opérations dans une seule requête HTTP. Cela réduit la surcharge réseau lors de grands événements de provisioning (ex. une synchronisation de répertoire à l’échelle de l’organisation).
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
"Operations": [
{
"method": "POST",
"path": "/Users",
"bulkId": "bulk-1",
"data": {
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "[email protected]",
"name": { "givenName": "Nouveau", "familyName": "Utilisateur" },
"emails": [{ "value": "[email protected]", "primary": true }]
}
},
{
"method": "PATCH",
"path": "/Users/scim-ext-id-123",
"data": {
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{ "op": "replace", "path": "active", "value": false }]
}
}
]
}Permissions Requises
| Opération | Permission |
|---|---|
| Créer/mettre à jour/supprimer des connexions SCIM | manage:scim_connections |
| Voir les connexions SCIM et statistiques | view:scim_connections |
| Voir les logs d’activité SCIM | view:scim_logs |
| Endpoints du protocole SCIM | Bearer token (aucune permission Auris requise) |
Pages Associées
- Gestion des Utilisateurs — Gestion manuelle des utilisateurs via API et Console
- Import et Export d’Utilisateurs — Import en masse ponctuel depuis CSV ou JSON
- Organisations : Enterprise SSO — SSO par organisation pour les clients B2B
- Console : Connexions SCIM — Guide complet de la Console