Skip to Content

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 :

  1. Un nouvel employé est ajouté dans Okta (ou un autre IdP).
  2. Okta envoie une requête POST /scim/v2/Users à Auris avec les attributs de l’employé.
  3. Auris crée l’utilisateur à la fois dans sa base de données et dans le realm Keycloak sous-jacent.
  4. 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.
  5. Auris désactive l’utilisateur et invalide toutes les sessions actives.
  6. Quand l’enregistrement de l’employé est supprimé dans Okta, Okta envoie DELETE /scim/v2/Users/[id].
  7. 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 :

POST/api/scim/connectionsRequires: manage:scim_connections

Cré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.

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é.

GET/scim/v2/Users

Liste les utilisateurs. Supporte le filtrage SCIM, la pagination (startIndex, count) et la sélection des attributs (attributes, excludedAttributes).

POST/scim/v2/Users

Cré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.

GET/scim/v2/Users/[id]

Récupère un seul utilisateur par ID SCIM externe.

PUT/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.

PATCH/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.

DELETE/scim/v2/Users/[id]

Désactive et supprime temporairement un utilisateur. Les sessions sont révoquées immédiatement.

POST/scim/v2/Bulk

Traite 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 SCIMChamp AurisNotes
userNameusernameAussi stocké comme scimUserName pour la déduplication
emails[0].value (primary)email
name.givenNamefirstName
name.familyNamelastName
activeenabledfalse active la révocation immédiate des sessions
externalIdscimExternalIdStocké 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.

GET/api/scim/connections/[id]/mappingsRequires: manage:scim_connections

Liste tous les mappages d’attributs pour une connexion.

POST/api/scim/connections/[id]/mappingsRequires: manage:scim_connections

Cré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 :

DirectionSignification
INBOUNDAttribut SCIM → Champ Auris (utilisé pendant le provisioning)
OUTBOUNDChamp Auris → Attribut SCIM (utilisé quand Auris est interrogé par l’IdP)
BIDIRECTIONALLes 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érateurSignification
eqÉgal
neDifférent
coContient
swCommence par
ewSe termine par
gtSupérieur à
ltInférieur à
geSupérieur ou égal
leInférieur ou égal
prL’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.

GET/api/scim/connections/[id]/statsRequires: manage:scim_connections

Retourne 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érationPermission
Créer/mettre à jour/supprimer des connexions SCIMmanage:scim_connections
Voir les connexions SCIM et statistiquesview:scim_connections
Voir les logs d’activité SCIMview:scim_logs
Endpoints du protocole SCIMBearer token (aucune permission Auris requise)

Pages Associées