Skip to main content
Reelevant expose un service SCIM 2.0 entrant (RFC 7643/7644) : un fournisseur d’identité peut créer, mettre à jour, désactiver et supprimer des utilisateurs, et maintenir les Teams (Resource Groups) alignés sur ses propres groupes.

URL de base et authentification

Les tokens SCIM sont propres à une entreprise, à durée illimitée, préfixés par scim_, stockés hachés et renvoyés une seule fois à la création. Deux tokens peuvent être actifs simultanément, afin de faire tourner le secret sans interruption. L’entreprise est déduite du token : un fournisseur d’identité ne peut jamais adresser un autre tenant. Une requête est rejetée avec un 401 lorsque le token est absent, inconnu ou révoqué, et lorsque SCIM est désactivé sur l’entreprise. Les tokens d’accès utilisateur et les en-têtes de service internes ne sont pas acceptés sur ces routes.
Les réponses SCIM ne sont pas encapsulées dans l’enveloppe JSend utilisée par le reste de l’API, et ces routes sont absentes de la spécification OpenAPI : SCIM impose ses propres formats de corps et tolère les attributs inconnus envoyés par les connecteurs.

Ressources et opérations

Tout autre chemin — y compris /Bulk et /Me — renvoie un 404 avec un corps d’erreur SCIM. Les comptes de service sont invisibles pour SCIM : ils ne sont jamais listés, mis à jour ni désactivés.

Mapping des attributs utilisateur

Les utilisateurs créés par SCIM reçoivent un mot de passe aléatoire inutilisable et s’authentifient par SSO. Ils ne reçoivent jamais d’email d’invitation, et une invitation en attente pour la même adresse est marquée comme utilisée.

Sémantique du cycle de vie

Le mode de déprovisionnement est un réglage côté Reelevant (soft par défaut), et non un choix porté par la requête.

Rôles et groupes

/Groups correspond un pour un aux Teams (Resource Groups). Les groupes créés par SCIM sont plats : la hiérarchie reste une décision d’administrateur prise via l’API REST, et SCIM ne la modifie jamais. DELETE /Groups/{id} sur un Team qui possède des parents ou des enfants renvoie 400 mutability. Un utilisateur conserve toujours au moins un Team : retirer le dernier applique les Teams par défaut de l’entreprise. Lorsque la synchronisation des groupes est désactivée sur l’entreprise, toutes les routes /Groups renvoient 501. Un utilisateur possède exactement un rôle : le rôle ne peut donc pas être une appartenance de groupe. La source est un réglage par entreprise : Une valeur non résolue ne fait jamais échouer la requête : le rôle par défaut configuré est appliqué et une entrée d’audit enregistre l’écart. En mode groups, la perte du groupe mappé ramène l’utilisateur au rôle par défaut.

Pagination et filtres

Les attributs filtrables sont userName et externalId sur /Users, displayName et externalId sur /Groups. Tout autre attribut, ou toute grammaire au-delà de eq (and, or, co, sw), renvoie 400 invalidFilter plutôt que de lister silencieusement tout le tenant. Les listes utilisent l’enveloppe SCIM ListResponse :

Opérations PATCH

Operations et operations sont tous deux acceptés, avec ou sans le schéma PatchOp. Les chemins sont insensibles à la casse, value peut être un objet ou un tableau, et les booléens peuvent arriver sous forme de chaînes — Entra ID et Okta envoient toutes ces variantes.
Sur /Groups, les opérations sur les membres acceptent une liste members comme la forme filtrée members[value eq "<userId>"]. Tout autre filtre de valeur renvoie 400 invalidPath.

Format d’erreur

Les erreurs utilisent l’objet Error de la RFC 7644 §3.12, servi en application/scim+json :

Capacités annoncées et limites

GET /ServiceProviderConfig annonce exactement ce qui est implémenté, afin que les connecteurs se dégradent proprement au lieu d’échouer : Limites connues : un seul rôle par utilisateur, les groupes créés par SCIM sont plats, un utilisateur conserve toujours au moins un Team, et les adresses email étant uniques globalement une adresse déjà prise dans une autre entreprise renvoie uniqueness.

Endpoints d’administration

L’activation de SCIM et la gestion des tokens passent par l’API REST habituelle, authentifiée par un token d’accès utilisateur (voir Authentification). read Company est requis en lecture, update Company en écriture. Chaque requête SCIM et chaque changement de configuration est enregistré dans la piste d’audit, lisible via GET /v2/audit-logs par tout appelant disposant du droit update sur les utilisateurs, les rôles ou les Teams.

Ressources liées