# SCIM

## Prérequis (auto-hébergé)

| Version GLPI | PHP minimum | Recommandé |
| ------------ | ----------- | ---------- |
| 10.0.x       | 8.1         | 8.2        |
| 11.0.x       | 8.2         | 8.4        |

{% hint style="info" %}
Une souscription [GLPI Network BASIC](https://services.glpi-network.com/#offers) (ou supérieure) est requise. Ce plugin est également disponible pour toutes les instances [GLPI Network Cloud](https://glpi-network.cloud).
{% endhint %}

{% hint style="danger" %}
Le point d'accès SCIM API fourni par le plugin doit être accessible depuis le fournisseur d'identité. Si nous parlons d'Azure ou d'Okta, cette URL particulière doit être disponible depuis internet. Nous suggérons fortement de limiter les adresses IP qui peuvent accéder à cette URL (en plus d'ajouter une méthode d'authentification forte).
{% endhint %}

## Mot de passe/SSO

Bien que mentionnée dans les [spécifications SCIM](https://datatracker.ietf.org/doc/html/rfc7643#section-9.2), la synchronisation des mots de passe n'est pas toujours disponible en fonction du fournisseur :

* Azure : [non disponible](https://learn.microsoft.com/en-us/answers/questions/1113754/azure-ad-scim-provisioning-how-to-sync-passwords)
* Okta : [disponible](https://developer.okta.com/docs/concepts/scim/#sync-passwords)

{% hint style="danger" %}
Au lieu de pousser les mots de passe, nous vous recommandons fortement d'utiliser [OAuth SSO](https://glpi-plugins.readthedocs.io/en/latest/oauthsso/index.html) pour connecter vos utilisateurs à GLPI.
{% endhint %}

## Installer le plugin

* Depuis la marketplace, téléchargez le plugin **SCIM**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FbemHUflnCwMkwDhJirbO%2Fimage.png?alt=media&#x26;token=c676c30d-241a-481a-9e4c-d6637c92ee8a" alt=""><figcaption></figcaption></figure></div>

## Configuration GLPI

Vous devez déclarer un serveur d'identité dans la configuration du plugin (vous pouvez en ajouter autant que vous le souhaitez).

* Allez sur votre instance GLPI
* Sélectionnez **Configuration > Serveurs d'identité SCIM**
* Cliquez sur **+ Ajouter**
* Ajoutez un nom
* Sélectionnez le compte administrateur qui peut mettre à jour vos données GLPI
* Cliquez sur **Activer**
* Sélectionnez la méthode **Bearer**
* Cliquez sur **+ Ajouter**
* Vous pouvez maintenant voir l'URL de l'API

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-a33f6a22b064408006af817ec740c3bbcc328146%2Fscim-20.png?alt=media" alt="images/scim-20.png"><figcaption></figcaption></figure>

{% hint style="info" %}
Pour Azure, le secret attendu est un jeton JWT valide à longue durée de vie. Nous ne pouvons pas utiliser un échange OAuth (Azure ne demande pas d'URL d'autorisation). Donc, dans GLPI, configurez votre serveur SCIM avec la sécurité **Bearer** et collez le jeton JWT de GLPI dans le champ **Secret token** d'Azure.
{% endhint %}

{% hint style="warning" %}
Assurez-vous de **coller le jeton (jeton Jwt)** pour garantir le bon fonctionnement de votre application.
{% endhint %}

Vous obtiendrez une URL d'API que vous pourrez coller dans la configuration de votre fournisseur d'identité. Consultez la [documentation spécifique du fournisseur](#providers) pour plus de détails.

Vous pouvez définir certains paramètres optionnels :

* **Enregistrer les requêtes dans les logs** : si coché, toutes les requêtes seront enregistrées dans l'onglet "Historique" de votre serveur déclaré.
* **Serveur par défaut** : si coché, ce serveur sera utilisé par défaut sans fournir son ID dans l'URL de l'API.
* **Sécurité** : une liste déroulante des méthodes de sécurité disponibles. Actuellement implémentées :
  * **Aucune** : aucune sécurité, n'importe qui peut accéder à l'API.
  * **Basic** : authentification HTTP Basic. Vous devez fournir un nom d'utilisateur et un mot de passe.
  * **Digest** : authentification HTTP Digest. Vous devez fournir un nom d'utilisateur et un mot de passe.
  * **Bearer** : authentification HTTP Bearer. Un jeton JWT à longue durée de vie (10 ans) sera généré.
  * **OAuth2** : authentification OAuth2. Vous devez fournir au moins une URI de redirection valide. Nous prenons en charge les flux suivants :
    * Code d'autorisation.
    * Identifiants client.

Votre serveur SCIM est maintenant prêt à recevoir des requêtes de votre fournisseur d'identité.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-9972c4e33d6432256f0c5f5f16153cb780ba2b40%2Fscim_api.png?alt=media" alt="images/scim_api.png"><figcaption></figcaption></figure>

## Entra

### Références

* [Utiliser SCIM pour provisionner des utilisateurs et des groupes](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/use-scim-to-provision-users-and-groups#integrate-your-scim-endpoint-with-the-azure-ad-provisioning-service)

### Configuration

### Créer une application

* Connectez-vous à votre [portail Azure](https://aad.portal.azure.com/)
* Cliquez sur **Ajouter**
* puis **Application d'entreprise**.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-813873e44393a7446a8644a15e97cebe12ea2bf4%2Fscim-4.png?alt=media" alt="images/scim-4.png"><figcaption></figcaption></figure>

* Cliquez sur **Créer votre application**.
* Dans la section qui apparaît sur la droite, entrez le nom de votre application et choisissez la 3ème option **\`intégrer toute autre application non trouvée dans la galerie\`**.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-1757cb431e2c5be10a4d1b63c3bd7a611849bedd%2Fscim-5.png?alt=media" alt="images/scim-5.png"><figcaption></figcaption></figure>

### Configuration de l'application

* Une fois votre application créée, allez dans **Provisionnement**.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-c8129d600370555b3080fafac9e2f3e9122a00c7%2Fscim-6.png?alt=media" alt="images/scim-6.png"><figcaption></figcaption></figure></div>

* Sélectionnez **Automatique**.
* Spécifiez l'**URL** [générée précédemment](https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/setup_plugin.html) depuis GLPI et collez le **jeton**.

{% hint style="warning" %}
Assurez-vous de **coller le jeton (jeton JWT)** pour garantir le bon fonctionnement de votre application.
{% endhint %}

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-b474be27e9dada6ea68a22cd782784ebf6da9449%2Fscim-7.png?alt=media" alt="images/scim-7.png"><figcaption></figcaption></figure>

* Cliquez sur Tester la connexion. Un message apparaîtra vous informant de la réussite de la connexion.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-b18e591ade81d93f0c4385bd0f55f34681a16e85%2Fscim-8.png?alt=media" alt="images/scim-8.png"><figcaption></figcaption></figure></div>

* Sur la même page, vous pouvez également configurer une adresse e-mail et un nombre en cas d'échec ou de suppressions accidentelles.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-1258d9de5e8476635effd2ff772b460ed3039d8f%2Fscim-9.png?alt=media" alt="images/scim-9.png"><figcaption></figcaption></figure></div>

* Cliquez sur **Enregistrer**

### Synchronisation de tous les utilisateurs

* Vous pouvez choisir de synchroniser l'intégralité de votre annuaire.
* Allez dans l'onglet **Paramètres > Portée** et sélectionnez **Synchroniser tous les utilisateurs et groupes**.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-80e191c5a7efa8d6d059815c1d1c2e738308f075%2Fscim-10.png?alt=media" alt="images/scim-10.png"><figcaption></figcaption></figure>

### Synchronisation des groupes et utilisateurs sélectionnés (option par défaut)

* Vous pouvez choisir de synchroniser uniquement certains groupes et/ou utilisateurs. Lors de l'actualisation de la page **\`Provisionnement\`**
* Allez dans l'onglet **Paramètres > Portée**
* Sélectionnez **Synchroniser uniquement les utilisateurs et groupes assignés**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-02fc30de84faef1ac1fc738171c270675396e054%2Fscim-11.png?alt=media" alt="images/scim-11.png"><figcaption></figcaption></figure></div>

* Ensuite, allez dans **Utilisateurs et groupes**
* Cliquez sur **Ajouter un utilisateur/groupe**
* Cliquez sur **Aucune sélection**
* Sélectionnez les groupes et utilisateurs que vous souhaitez dans la boîte à droite
* Puis **Sélectionner** et **Assigner**.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-254557c80bf60a3e30c0996243f045fae3034258%2Fscim-12.png?alt=media" alt="images/scim-12.png"><figcaption></figcaption></figure>

### Activer le provisionnement

* Dans la section **Provisionnement**
* Changez le statut de **Désactivé** à **Activé**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-88f9bf217bc107c208f908885a7a07e79c88f060%2Fscim-13.gif?alt=media" alt="images/scim-13.gif"><figcaption></figcaption></figure></div>

### Vérifier le statut de synchronisation

* Dans la section **Aperçu**, vous pouvez vérifier que la synchronisation a réussi.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-b0db54061b0e952b90b42fff5a130d9b9d5be572%2Fscim-14.png?alt=media" alt="images/scim-14.png"><figcaption></figcaption></figure>

* Côté GLPI, allez dans la section **Journal des requêtes** de votre plugin SCIM **Configuration > Serveurs d'identité SCIM** pour vérifier que les comptes sont correctement synchronisés.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-d66f80a80827c1ec593fee2e7526883cb940316c%2Fscim-15.png?alt=media" alt="images/scim-15.png"><figcaption></figcaption></figure>

{% hint style="danger" %}
Consultez la procédure de configuration du plugin [OAuth SSO](https://glpi-plugins.readthedocs.io/en/latest/oauthsso/entra.html) pour authentifier les utilisateurs sur GLPI.
{% endhint %}

## OKTA

### Références

* [Comprendre SCIM](https://developer.okta.com/docs/concepts/scim/)
* [Ajouter le provisionnement SCIM aux intégrations d'applications](https://help.okta.com/en-us/Content/Toimages/Apps/Apps_App_Integration_Wizard_SCIM.htm)
* [Attribuer des applications à des utilisateurs](https://help.okta.com/en-us/Content/Toimages/users-groups-profiles/usgp-assign-apps.htm)

### Créer une application

* Depuis votre [portail OKTA](https://login.okta.com/)
* Cliquez sur **Applications**
* Et **Créer une intégration d'application**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-54408e359aaffe27cae3a0328d664c2ec0448782%2Fscim-16.png?alt=media" alt="images/scim-16.png"><figcaption></figcaption></figure>

* Sélectionnez **SWA - Secure Web Authentication**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-4d50e0374890c874adca7ce7516d61258792180d%2Fscim-17.png?alt=media" alt="images/scim-17.png"><figcaption></figcaption></figure>

* Ajoutez un nom à votre application
* Ajoutez l'URL de votre instance GLPI (cela redirigera votre utilisateur vers votre GLPI si cette application est disponible dans le portail utilisateur OKTA)
* Cliquez sur **Finish**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-cc2dcd659c9d7b8da6cbe594888ee0b60867c683%2Fscim-18.png?alt=media" alt="images/scim-18.png" width="563"><figcaption></figcaption></figure></div>

### Configuration de l'application

* Retournez à **General**
* Cliquez sur **Edit**
* Nommez le label
* Sélectionnez SCIM pour activer le service
* Cliquez sur **Save**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-aa5eb01fc297a1cd71b3a5b7cc3e82dcf384b000%2Fscim-19.png?alt=media" alt="images/scim-19.png" width="557"><figcaption></figcaption></figure></div>

Pour configurer le provisionnement, vous devez configurer GLPI. Référez-vous à [setup GLPI](https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/setup_plugin.html) pour configurer **URL API** et **JWT Token**

* Copiez l'**API URL** et le **JWT token**, vous devrez coller ces informations dans OKTA.
* Retournez à votre application OKTA
* Collez l'API URL
* Sélectionnez le champ Identifiant unique pour les utilisateurs (*name.familyName, phoneNumber, name.givenName, id, userName, email,* etc. Ce sera la méthode d'authentification des utilisateurs)
* Sélectionnez les actions qui peuvent être supportées
* Sélectionnez **HTTP Header**
* Collez le **JWT token**

{% hint style="danger" %}
Vous devez **coller le JWT token** et non le secret
{% endhint %}

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-0d7830ec4461f04106629c790c811c66752ba976%2Fscim-21.png?alt=media" alt="images/scim-21.png"><figcaption></figcaption></figure>

* Cliquez sur **Test Connector Configuration**

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-fb0376eaf752c3f8b3f895eeb07e1543c27152de%2Fscim-22.png?alt=media" alt="images/scim-22.png" width="315"><figcaption></figcaption></figure></div>

* vous pouvez maintenant **fermer** cette fenêtre et **sauvegarder** votre configuration
* Toujours dans **provisioning**, vous pouvez éditer et sélectionner les actions possibles pour la mise à jour de vos données utilisateur.

{% hint style="warning" %}
Nous recommandons de désélectionner **Sync Password** et d'utiliser [OAuth SSO](https://glpi-plugins.readthedocs.io/en/latest/oauthsso/okta.html) pour authentifier votre utilisateur.
{% endhint %}

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-63dcd54bacee36c2d66802d0eb55c26b0cd01ef1%2Fscim-23.png?alt=media" alt="images/scim-23.png" width="563"><figcaption></figcaption></figure></div>

La dernière étape consiste à assigner votre application aux utilisateurs

### Synchronisation de tous les utilisateurs

* Allez dans la console d'administration
* Sélectionnez **Directory > Groups**
* Sélectionnez **Everyone**
* Dans **Applications**, cliquez sur **Assign applications**
* Cliquez sur assign sur votre application SCIM
* Cliquez sur **Save and Go Back**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-57a091c02911663726597a82d0bb5da46de0106a%2Fscim-24.png?alt=media" alt="images/scim-24.png"><figcaption></figcaption></figure>

### Synchronisation de groupes et d'utilisateurs sélectionnés

* Allez dans la console d'administration
* Sélectionnez **Directory > People**
* Sélectionnez l'**Utilisateur** que vous souhaitez importer
* Dans **Applications**, cliquez sur **Assign applications**
* Cliquez sur assign sur votre application SCIM
* Cliquez sur **Save and Go Back**

Répétez cette étape pour tous les utilisateurs et groupes que vous souhaitez importer.

{% hint style="danger" %}
Consultez la procédure de configuration du plugin [OAuth SSO](https://glpi-plugins.readthedocs.io/en/latest/oauthsso/okta.html) pour authentifier les utilisateurs dans GLPI.
{% endhint %}

***

## FAQ

Si vous avez des questions concernant l'utilisation du plugin, n'hésitez pas à consulter notre FAQ

<a href="https://app.gitbook.com/s/VU1qbB9Oe25HAYDAQ4tR/plugins/scim" class="button secondary">Aller à la FAQ</a>
