> ## Documentation Index
> Fetch the complete documentation index at: https://developers.0flaw.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Provisioning SCIM (Microsoft Entra ID)

> Branchez votre annuaire Microsoft en 10 minutes : arrivées, départs et connexions gérés automatiquement, sans écrire une ligne de code.

Le provisioning SCIM relie votre annuaire **Microsoft Entra ID** (anciennement Azure AD) à
0flaw. Une fois configuré — une seule fois, en une dizaine de minutes — c'est Microsoft qui
pilote tout :

* **Une arrivée** dans votre annuaire → le compte employé est créé dans 0flaw, dans le bon
  secteur, automatiquement.
* **Un départ** (compte bloqué ou retiré) → l'employé est archivé dans 0flaw, ses accès coupés.
* **La connexion** → vos salariés cliquent sur le bouton **Microsoft** de la page de connexion
  et entrent avec leur compte d'entreprise. Aucun mot de passe à distribuer, jamais.

<Tip>
  **SCIM ou API ?** Si vous êtes sur Microsoft 365, choisissez SCIM : zéro code, zéro
  maintenance. L'[API de provisioning](/index) reste le bon choix pour un SIRH ou un annuaire
  non-Microsoft. Google Workspace ne propose pas de provisioning SCIM sortant : les clients
  Google utilisent la synchronisation intégrée au dashboard ou l'API.
</Tip>

## Prérequis

* Un compte **administrateur** de votre tenant Microsoft (rôle « Administrateur d'application »
  au minimum).
* Une licence **Microsoft Entra ID P1 ou supérieure** — le provisioning automatique vers une
  application personnalisée fait partie des fonctionnalités P1. C'est le prérequis le plus
  souvent découvert trop tard : vérifiez-le d'abord.
* Environ **10 minutes**.

## Étape A — Récupérer l'URL et le jeton dans 0flaw

Dans le dashboard : **Paramètres avancés → Intégrations annuaire → carte « Provisioning
SCIM — Microsoft Entra ID »**.

1. Copiez l'**URL du locataire** affichée (de la forme `https://api.0flaw.fr/scim/v2`).
2. Cliquez **« Générer le jeton SCIM »** et copiez le jeton immédiatement.

<Warning>
  Le jeton n'est affiché **qu'une seule fois** — c'est l'équivalent d'un mot de passe donnant
  accès à la gestion de vos employés. Ne le partagez pas. En cas de doute, révoquez-le
  (**Réglages → Clés API**) et générez-en un nouveau : la révocation est immédiate.
</Warning>

## Étape B — Configurer Microsoft Entra ID

<Steps>
  <Step title="Créer l'application d'entreprise">
    Sur [entra.microsoft.com](https://entra.microsoft.com) : **Applications → Applications
    d'entreprise → Nouvelle application → Créer votre propre application**. Donnez-lui un nom
    (par exemple « 0flaw »), cochez la troisième option — *Intégrer une autre application que
    vous ne trouvez pas dans la galerie* — puis **Créer**.
  </Step>

  <Step title="Activer le provisioning automatique">
    Dans l'application créée : menu **Approvisionnement** (« Provisioning ») → **Connecter
    votre application**. Renseignez :

    * **URL du locataire** : l'URL copiée à l'étape A ;
    * **Jeton secret** : le jeton généré à l'étape A.

    Cliquez **« Tester la connexion »** — la notification doit confirmer le succès (Microsoft
    vient d'appeler nos serveurs pour valider la configuration). Puis **Créer / Enregistrer**.
  </Step>

  <Step title="Appliquer les réglages recommandés">
    Toujours dans **Approvisionnement**, section Paramètres et Mappages :

    * **Étendue** : « Synchroniser **uniquement** les utilisateurs et groupes assignés » —
      c'est votre garde-fou : seuls les comptes que vous affectez explicitement partent vers
      0flaw ;
    * **Mappages** : passez « Provision Microsoft Entra ID **Groups** » sur **Non** (les
      groupes ne sont pas provisionnés — le secteur vient du champ « department ») ; laissez
      « Users » sur Oui ;
    * **Notification par e-mail en cas de défaillance** : cochez, avec l'adresse de votre
      équipe IT ;
    * **Empêcher la suppression accidentelle** : cochez, avec un seuil (par exemple 20) — si
      une manipulation devait désactiver plus de comptes que ce seuil d'un coup, Entra se met
      en pause au lieu d'exécuter.
  </Step>

  <Step title="Affecter les utilisateurs">
    Menu **Utilisateurs et groupes → Ajouter un utilisateur/groupe**. Affectez les personnes —
    ou mieux, un groupe (« Tous les salariés ») que votre équipe RH maintient déjà. Seuls les
    comptes affectés ici sont synchronisés.
  </Step>

  <Step title="Tester avec un compte, puis démarrer">
    Menu **Approvisionner à la demande** : choisissez un utilisateur affecté →
    **Approvisionner**. Entra l'envoie immédiatement et affiche le détail de chaque opération.
    Vérifiez dans 0flaw (**Gestion des Utilisateurs**) que l'employé est apparu, dans le bon
    secteur.

    Quand le test est concluant : bouton **« Démarrer l'approvisionnement »**. À partir de là,
    Entra synchronise en continu, par cycles d'environ 40 minutes, sans aucune intervention.
  </Step>
</Steps>

## Ce qui se passe côté 0flaw

| Dans votre annuaire Microsoft                         | Dans 0flaw                                                               |
| ----------------------------------------------------- | ------------------------------------------------------------------------ |
| Utilisateur affecté à l'application                   | Employé créé (rôle **Employé**), actif                                   |
| Champ **« Département »** de l'utilisateur            | **Secteur** de l'employé (créé au besoin)                                |
| Modification (nom, poste, email…)                     | Fiche mise à jour au cycle suivant                                       |
| Compte **bloqué** ou retiré de l'application          | Employé **archivé** — accès coupé, historique conservé                   |
| Compte réactivé / réaffecté                           | Employé restauré, avec son historique                                    |
| Utilisateur **déjà présent dans 0flaw** (même e-mail) | Employé **repris** par l'annuaire, historique conservé (voir ci-dessous) |

<CardGroup cols={2}>
  <Card title="Connexion sans mot de passe" icon="key">
    Un employé provisionné se connecte via le bouton **Microsoft** de la page de connexion.
    Au premier login, son compte 0flaw est lié à son identité Microsoft — aucun envoi
    d'identifiants, aucun mot de passe à gérer.
  </Card>

  <Card title="Aucune suppression définitive" icon="archive">
    Un départ archive l'employé : ses résultats de campagnes et formations sont conservés.
    La suppression définitive reste une action manuelle dans le dashboard.
  </Card>

  <Card title="Lecture seule côté annuaire" icon="shield">
    0flaw ne modifie jamais rien dans votre annuaire : les données circulent uniquement
    d'Entra vers 0flaw.
  </Card>

  <Card title="Quota d'abonnement respecté" icon="gauge">
    Une création au-delà de votre quota est refusée — l'erreur est visible dans les journaux
    d'approvisionnement Entra, et le reste de la synchronisation continue.
  </Card>
</CardGroup>

## Employés déjà présents dans 0flaw

Si vous aviez créé vos employés avant de brancher l'annuaire — à la main, par import de
fichier, via le connecteur Microsoft 365 ou Google, ou par l'API — vous n'avez **rien à
supprimer**. Activez **« Adopter les employés déjà présents »** dans *Paramètres avancés →
Intégrations → Provisioning SCIM* : au prochain cycle, l'annuaire reprend simplement les
comptes existants dont l'adresse e-mail correspond.

<Note>
  L'employé conserve son identifiant interne, et donc **tout son historique** : chartes
  signées, formations suivies, XP et niveau, résultats de campagnes de phishing. Il devient
  aussi éligible à la connexion par le bouton **Microsoft**, sans envoi d'identifiants.
</Note>

Le réglage est désactivé par défaut : tant qu'il l'est, un e-mail déjà utilisé fait échouer
le provisioning de cet utilisateur (visible dans les journaux Entra), comme auparavant.

Restent refusés dans tous les cas, par sécurité :

* une adresse qui correspond à un compte **administrateur** de votre organisation ;
* une adresse déjà utilisée dans une **autre organisation** 0flaw ;
* un employé déjà rattaché à **un autre objet** de votre annuaire.

Vous pouvez aussi convertir un employé immédiatement, sans attendre le cycle de l'annuaire :
dans la liste **Employés**, l'action « Convertir en compte SCIM » de la ligne concernée. Elle
n'est proposée que si un jeton de provisioning SCIM actif existe.

## Questions fréquentes

<AccordionGroup>
  <Accordion title="« Tester la connexion » échoue">
    Vérifiez l'URL du locataire **au caractère près** (elle se termine par `/scim/v2`, sans
    barre oblique finale) et recollez le jeton. Si le jeton a été perdu ou révoqué, générez-en
    un nouveau depuis la carte SCIM du dashboard.
  </Accordion>

  <Accordion title="J'ai ajouté un utilisateur, il n'apparaît pas dans 0flaw">
    Le provisioning continu fonctionne par cycles d'environ **40 minutes**. Pour un résultat
    immédiat, utilisez **« Approvisionner à la demande »**. Vérifiez aussi que l'utilisateur
    est bien **affecté à l'application** (menu Utilisateurs et groupes) : avec l'étendue
    recommandée, un compte non affecté n'est jamais synchronisé.
  </Accordion>

  <Accordion title="Un utilisateur est en erreur dans les journaux Entra">
    Ouvrez le détail dans **Approvisionnement → Journaux d'approvisionnement** : le message
    indique la cause exacte. Les trois plus courantes : **quota d'abonnement atteint** (le
    compte sera créé dès que le quota le permet), **email déjà utilisé** dans une autre
    organisation 0flaw (contactez le support), et **email déjà utilisé dans votre propre
    organisation** — dans ce dernier cas, activez « Adopter les employés déjà présents »
    (voir la section correspondante) pour que l'annuaire reprenne le compte existant.
  </Accordion>

  <Accordion title="Un salarié quitte l'entreprise, que dois-je faire ?">
    Rien de plus que votre procédure habituelle : bloquez ou supprimez son compte dans votre
    annuaire (ou retirez-le du groupe affecté). Au cycle suivant, il est archivé dans 0flaw et
    ne peut plus se connecter.
  </Accordion>

  <Accordion title="Le retrait d'affectation ne fait rien avec « Approvisionner à la demande »">
    C'est normal : un compte retiré est **hors étendue**, et ce cas n'est traité que par le
    cycle automatique. Assurez-vous que l'approvisionnement continu est démarré, et attendez
    le cycle (ou utilisez « Redémarrer l'approvisionnement » pour forcer un passage complet).
  </Accordion>

  <Accordion title="Puis-je synchroniser les groupes Entra ?">
    Non — et c'est volontaire : l'organisation 0flaw repose sur les **secteurs**, alimentés par
    le champ « Département » de chaque utilisateur. Désactivez le mappage Groups (étape B.3)
    pour garder des journaux propres.
  </Accordion>
</AccordionGroup>

## Pour les équipes techniques

Le serveur implémente SCIM 2.0 (RFC 7643/7644) : ressource `Users` (POST, GET avec filtre
`eq` et pagination, PUT, PATCH, DELETE), extension enterprise (`department`), endpoints de
découverte `ServiceProviderConfig`, `ResourceTypes` et `Schemas`. L'authentification est un
jeton Bearer (une [clé API](/authentication) portant la permission `write:employees`), et
l'isolation par entreprise est garantie par le jeton — jamais par le contenu des requêtes.
Non supporté : bulk, tri, ETag, provisioning de groupes.
