# OAuth SSO

## 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="warning" %}
**Pour Google et OKTA** : seules les URL publiques ET sécurisées (https) sont acceptées. Si votre URL GLPI n'est pas accessible depuis Internet, cette procédure ne s'applique pas.

**Pour Entra, Keycload** : les URL privées (non disponibles sur Internet) sont acceptées, mais doivent être sécurisées (https).
{% endhint %}

## Installer le plugin

* Aller sur le marketplace. Télécharger **Oauth SSO** et l'activer

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FPQIg1DcLz6tA85gQVm79%2Finstall_oauthsso.png?alt=media&#x26;token=5f1a513f-5737-45f7-a8ae-80590798501a" alt=""><figcaption></figcaption></figure></div>

## Authentification externe

Le plugin utilise la fonctionnalité **Authentification externe** de GLPI et pour être fonctionnel, il a besoin d'une configuration initiale.

* Aller dans **Configuration > Authentification > Autres méthodes d'authentification**
* Dans la section **Autres authentifications transmises dans la requête HTTP**
* Le champ **Champs de stockage pour l'identifiant dans la requête HTTP** doit être défini, généralement **HTTP\_AUTH\_USER**.
* Le champ **Supprimer le domaine des identifiants de type identifiant\@domaine** peut être défini sur **Oui** ou **Non**.

{% hint style="info" %}
Dans le cas d'une authentification via SSO, l'option **Supprimer le domaine des identifiants de type identifiant\@domaine** peut être définie sur **Oui**, ce qui permettra de fusionner 2 enregistrements utilisateurs s'ils sont déjà présents dans la base de données (interne ou LDAP(S)).

{% hint style="warning" %}
Attention car cette option est sujette à l'usurpation d'identité. Si votre application est ouverte à des utilisateurs autres que les vôtres, il est possible qu'un utilisateur puisse être fusionné avec un autre. Par exemple, **<jean.dupont@mondomaine.fr>** a un homonyme mais une adresse email différente **<jean.dupont@unautredomaine.fr>**. En supprimant le domaine, les 2 enregistrements seront fusionnés et les Jean Dupont auront le même compte.
{% endhint %}
{% endhint %}

Les utilisateurs qui vont s'authentifier ne seront pas connus de GLPI, il est donc nécessaire de renseigner certains champs pour créer leur fiche avec un minimum d'informations.

Les champs qui peuvent être récupérés par SSO sont les suivants :

* Nom : **givenName**
* Prénom : **familyName**
* Email : **email**
* Email2 : **email2**
* Numéro de téléphone : **phone**
* Mobile : **mobile**
* Titre : **title**
* Langue : **language**

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

* Sauvegarder votre configuration

Vous devez également activer l'ajout automatique des utilisateurs dans GLPI pour les créer dans GLPI au moment de l'authentification

* Dans le menu **Configuration > Authentification > Configuration**
* Le champ **Ajouter automatiquement les utilisateurs depuis les sources d'authentification externes** doit être changé en **Oui**

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

## Option de récupération des informations du profil utilisateur

Vous pouvez choisir si vous souhaitez récupérer les informations du profil utilisateur. Dans **Configuration > Applications Oauth SSO**, sélectionnez oui ou non selon vos besoins.

{% hint style="danger" %}
Si **OAuth SSO** est votre **unique source d'authentification ET de provisionnement**, nous vous recommandons de définir l'option **Récupérer les informations du profil utilisateur** sur **Oui** afin que les informations utilisateur puissent être récupérées. Veuillez noter que les claims doivent également être correctement configurés côté fournisseur.

Si vous utilisez une **source de provisionnement externe** telle que SCIM, nous vous recommandons de définir l'option **Récupérer les informations du profil utilisateur** sur **Non** afin que les informations utilisateur ne soient pas écrasées et remplacées par celles du plugin OAuth SSO.
{% endhint %}

## Apple

### Créer un nouvel identifiant

* Rendez-vous sur cette page pour configurer le [fournisseur Apple](https://developer.apple.com/account/resources/certificates/list)
* Créez un nouvel "Identifiant" dans l'onglet **`Identifiers`**.

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

* Sélectionnez `App IDs`

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

* Puis continuez
* Sélectionnez `type` => `App`

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

* Puis continuez
* Sélectionnez la capacité **`Sign in with Apple`**

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

* Le **`Team ID`** se trouve ici (1).
* Le **`Client ID`** se trouve ici (2).

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

### Fichier de clé et ID de clé

* Rendez-vous ici pour créer le [fichier de clé](https://developer.apple.com/account/resources/authkeys/list)

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

* Entrez un nom et une description (1).

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

* Sélectionnez `Sign in with Apple`
* Cliquez sur `Configure` (2) pour sélectionner l'`App ID` créé précédemment

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

Après avoir enregistré votre application, vous pourrez récupérer :

* Le **`Key File`** (1)
* Le **`Key ID`** (2)

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

Vous avez maintenant toutes les informations nécessaires pour configurer votre fournisseur dans le plugin OauthSSO.

{% hint style="warning" %}
**Veuillez noter** : Le traitement de l'identifiant et de la clé Apple peut prendre un certain temps côté Apple ; potentiellement jusqu'à 48 heures.
{% endhint %}

Avertissement concernant la récupération des informations utilisateur

***

{% hint style="info" %}
Pour l'instant, seuls l'`email`, l'`identifiant sujet` (sub), le `prénom` et le `nom` peuvent être récupérés auprès du fournisseur d'identité.
{% endhint %}

{% hint style="warning" %}
Concernant la récupération du `prénom` / `nom`. Veuillez noter que ces informations ne sont disponibles **lors de la première connexion de l'utilisateur**, à condition que l'utilisateur **accepte le partage de ses informations**. Pour les connexions ultérieures, **seul l'identifiant utilisateur** sera récupéré.
{% endhint %}

## Entra

### Enregistrer votre application dans Entra

Tout d'abord, enregistrez votre application auprès de votre client Entra Active Directory (Entra AD). Cela vous fournira un ID d'application pour votre application et lui permettra de recevoir des jetons.

* Connectez-vous au [portail Entra](https://entra.microsoft.com/#home)
* Choisissez votre locataire Entra AD en sélectionnant votre compte en haut à droite de la page. Sélectionnez ensuite la barre de navigation **Changer de répertoire**, puis le locataire souhaité
* Ignorez cette étape si vous n'avez qu'un seul locataire Entra AD sous votre compte ou si vous en avez déjà sélectionné un

<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-1a1a2c230959518e7d6b58a960013625a73e9d1f%2Foauth-Entra-1.png?alt=media" alt="images/oauth-Entra-1.png"><figcaption></figcaption></figure></div>

* Dans le portail Entra, recherchez et sélectionnez **Entra Active Directory**
* Dans le menu **Active Directory** de gauche
* sélectionnez **Inscriptions d'applications**
* Puis **Nouvelle inscription**.

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

* Entrez **web** dans l'URI de redirection et collez l'URL de retour de votre instance GLPI :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-161278fa80fbc3f729e1c8f08964d8119491930c%2Foauth-Entra-3.png?alt=media" alt="images/oauth-Entra-3.png"><figcaption></figcaption></figure>

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

### Secret et certificat

* Dans l'onglet **certificats et secrets**, créez un nouveau secret qui devra être transféré à votre application Oauth SSO côté GLPI :

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

{% hint style="warning" %}
Lorsque vous cliquerez sur **ajouter**, **le secret ne sera disponible qu'une seule fois**. Dès que vous quitterez cette page, **le secret sera masqué** et nous ne pourrons plus y accéder. Pensez à **le conserver en lieu sûr** car nous en aurons besoin plus tard.
{% endhint %}

<img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-18fe77a53e577b49509f2a885f67d8fe23370d86%2Foauth-Entra-5bis.png?alt=media" alt="" data-size="original">

### Claims

{% hint style="warning" %}
Si vous utilisez **SSO V2**, une étape supplémentaire est requise. Les **claims** du côté Entra **doivent être saisis manuellement** et être de préférence de type **ID**.
{% endhint %}

* Dans l'onglet **Configuration des jetons**
* Cliquez sur **Ajouter une revendication facultative**
* Ajoutez les 4 claims ci-dessous :

<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-fc84d494536b9636570542ac8b6e36b92fabcb67%2Foauth-Entra-7.png?alt=media" alt="images/oauth-Entra-7.png"><figcaption></figcaption></figure></div>

### Autorisations API

GLPI doit pouvoir lire les informations utilisateur afin de les utiliser pour la connexion - Dans **Permissions de l'API** - Cliquez sur l'API déjà présente (Microsoft Graph pour notre exemple)

<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-c93429bb04dbe723abf3d702c66122b0b113a9a5%2Foauth-Entra-12.png?alt=media" alt="images/oauth-Entra-12.png"><figcaption></figcaption></figure></div>

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

Sélectionnez :

* email
* offline\_access
* profile
* user.read
* Pensez ensuite à sauvegarder vos modifications.

### Configuration GLPI

* Entra AD fournit une description avec les informations essentielles dont vous avez besoin :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-74064df1941382a9e31a663802ccd67b232bcc56%2Foauth-Entra-6.png?alt=media" alt="images/oauth-Entra-6.png"><figcaption></figcaption></figure>

* Spécifiez un **nom** d'application visible par les utilisateurs finaux.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-92c45616eba341c1ec7743fe57250062348b5aec%2Foauth-Entra-4bis.png?alt=media" alt="images/oauth-Entra-4bis.png"><figcaption></figcaption></figure>

Copiez les valeurs des champs ci-dessus :

* ID de l'application
* L'ID du détenteur
* La **valeur** du secret copié à l'étape précédente

{% hint style="warning" %}
Veuillez vérifier que la **valeur** du secret est correctement renseignée. Si l'ID du secret est copié, votre application tombera en erreur.
{% endhint %}

### Explication du champ ID

* 3 valeurs sont disponibles dans cet encart :

<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-96cf613e89d42d03b2cd85e6aa639666f60c5289%2Foauth-Entra-8.png?alt=media" alt="images/oauth-Entra-8.png"><figcaption></figcaption></figure></div>

1. **User Principal Name (UPN)** : cette option affichera le nom d'utilisateur complet de l'utilisateur qui se connecte (<nom.prenom@mondomaine.com> par exemple). Si vous souhaitez que seul le nom d'utilisateur soit visible (sans le @mondomaine.com, voir le paragraphe **XXXXXXXXXX**).
2. **Entra user ID (OID)** : cette option prend l'ID d'objet de l'Entra AD. Cet ID sera utilisé pour la connexion de l'utilisateur

<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-32eca233686bcd8e080e999c04de8fcd7724e668%2Foauth-Entra-9.png?alt=media" alt="images/oauth-Entra-9.png"><figcaption></figcaption></figure></div>

3. **Adresse e-mail** : cette option spécifie l'adresse e-mail de l'utilisateur. Ce champ sera utilisé pour la connexion. S'il est vide, l'UPN sera utilisé.

Si vous avez besoin de retrouver votre application dans le portail Entra, sélectionnez **Abonnements d'applications**, puis **Afficher toutes les applications**.

## Google

{% hint style="warning" %}
Google n'admet que des URLs pbuliques ET sécurisées (https). Si l'URL de votre GLPI n'est pas disponible depuis Internet, cette procédure ne sera pas applicable.
{% endhint %}

***

### Création d'un projet

* Depuis votre [console Google](https://console.cloud.google.com/) (un accès administrateur est requis)
* Rendez-vous sur votre organisation puis nouveau projet
* Entrez le nom de votre projet
* Cliquez sur **Créer**

<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-6be36402f8cf7db3144c44319454ad8e013f016f%2Foauth-sso-google-2.png?alt=media" alt="images/oauth-sso-google-2.png"><figcaption><p>Crétaion de projet</p></figcaption></figure></div>

* Revenez sur votre organisation
* Sélectionnez votre projet

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-8176b8b40938b8f1bc00d417d44eef3f864bda69%2Foauth-sso-google-3.png?alt=media" alt="images/oauth-sso-google-3.png"><figcaption><p>Sélection du projet</p></figcaption></figure>

### Configuration de l'accès Oauth

* Depuis le menu, cliquez sur **APIs & Services**
* Puis **Écran de consentement OAuth**

<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-4fa4966bc534ad1cb953a4f6f49fdd78264c06b3%2Foauth-sso-google-4.png?alt=media" alt="images/oauth-sso-google-4.png"><figcaption><p>Ecran de consentement OAuth</p></figcaption></figure></div>

#### Information de l'application

* Depuis l'aperçu, cliquez sur **`Commencez`**
* Indiquez le nom de l'application ainsi que l'utilisateur du support (les utilisateurs pourront vous contacter sur des questions concernant leur consentement)

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FwiN1zoQwSKcQbr2GZLkk%2Foauth-sso-create-project.png?alt=media&#x26;token=14cd8a12-4016-4562-ab22-f8ea2136e14e" alt=""><figcaption><p>Création de projet</p></figcaption></figure>

#### Audience

* Sélectionnez le type d'accès qui sera accordé à l'application (utilisateurs internes ou externes)
* Cliquez ensuite sur **`Suivant`**.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FCoyGRKfFnrDhCPWrGK4j%2Foauth-imap-audience.png?alt=media&#x26;token=90803583-773c-4c44-b669-0a1ee0413aee" alt="images/oauth-sso-google-5.png"><figcaption><p>Paramétrage de l'audience</p></figcaption></figure></div>

#### Information de contact

* Indiquez le nom du contact (ce contact sera informé des modifications effectuées sur l'application)

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FFc547d69n3pUO7aqER4H%2Foauth-imap-contact.png?alt=media&#x26;token=ee3c8fd1-08f4-4672-a808-491ca300e4b4" alt=""><figcaption><p>Contact de l'application</p></figcaption></figure>

#### Politique de données utilisateur des services Google API. <a href="#politique-de-donnees-utilisateur-des-services-google-api" id="politique-de-donnees-utilisateur-des-services-google-api"></a>

* Acceptez la Politique de données utilisateur des services Google API et cliquez sur **`Continuez`** et **`Créer`**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FT9kUqUJXAIoGZTXHUE7y%2Foauth-imap-data-policy.png?alt=media&#x26;token=1ead7692-8d91-40f6-8db3-0a169f17b42d" alt=""><figcaption><p>Finalisation de l'application</p></figcaption></figure>

### Création d'un client <a href="#creation-dun-client" id="creation-dun-client"></a>

#### Type d'application <a href="#type-dapplication" id="type-dapplication"></a>

Il faut maintenant créer un client d'application qui fera le lien entre Google et votre instance GLPI grâce à un ID d'application et un secret client.

* Dans l'onglet **Clients,** cliquez sur **`Créer un client`**
* Sélectionnez **Application Web** dans le type d'application
* Entrez un nom pour votre application

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FeJGy9RNEW2UcdXgeXVKP%2Foauth-sso-create-app.png?alt=media&#x26;token=a767c5ce-e542-49a4-bdcc-94ae90c67b12" alt=""><figcaption><p>Création d'application </p></figcaption></figure>

#### URIs de redirection autorisés <a href="#uris-de-redirection-autorises" id="uris-de-redirection-autorises"></a>

L'URL de retour devra être indiquée dans cette partie. Cette URL est indiquée dans GLPI dans la section **`Configuration`** > **`OAUth SSO`**

**Obtenir l'URL de callback sur GLPI**

* Depuis **`Configuration`** > **`OAuth SSO`** > **`+ Ajouter`**
* Nommez votre application
* Indiquez le **Fournisseur OAuth**
* Cliquez sur **`+ Ajouter`**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Frc5KZ9ZAwi815miqv1he%2Foauth-sso-create-app-glpi.png?alt=media&#x26;token=9f1c8b69-f2bf-4dfa-949f-66ac91ab6ef4" alt=""><figcaption><p>Création d'application </p></figcaption></figure>

* Sur l'écran suivant, récupérer l'URL de callback

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2F2XW95zZ2PvBWc4JequCS%2Foauth-sso-url-callback.png?alt=media&#x26;token=4a7d99a9-1786-4af1-97eb-f612dad28e05" alt=""><figcaption><p>Récupération l'URL de  callback</p></figcaption></figure>

* Copiez/collez cette URL dans votre application Google

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FeXELQQr8dDbvA9a96SWM%2Foauth-sso-authorized-uri.png?alt=media&#x26;token=a9f08783-11d2-4a6d-bf50-f4f2bf538a52" alt=""><figcaption><p>URIs autorisées</p></figcaption></figure></div>

* Cliquez sur **`Créer`** pour valider votre application

### Information d'application <a href="#information-dapplication-1" id="information-dapplication-1"></a>

{% hint style="warning" %}
A la prochaine étape, le **secret client** vous sera affiché. Dès que vous quitterez cet écran, il ne sera plus disponible. Pensez à le sauvegarder en lieu sûr
{% endhint %}

L'application est maintenant créée. Sur l'écran s'affiche l'ID d'application et le secret client qui seront à indiquez dans GLPI

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FKvwaXslf3hdxFWkZrVOj%2Foauth-sso-secret.png?alt=media&#x26;token=5341403d-ec49-46b4-9cac-09e8685607ec" alt=""><figcaption><p>ID et secret d'application</p></figcaption></figure></div>

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2FzGKSAxPF3PMLwmCfAiZi%2Foauth-sso-config-glpi.png?alt=media&#x26;token=f581e471-e725-431d-964b-be05a3c9640c" alt=""><figcaption><p>ID et secret application depuis GLPI</p></figcaption></figure>

* Sauvegarder votre saisie

### Informations optionnelles

Si vous activez la possibilité de remonter les informations du profil depuis OAuth SSO, des informations supplémentaires seront nécessaires pour qu'elles soient visibles par GLPI.

* Depuis l'onglet **Accès aux données,** cliquez sur **`Ajouter ou supprimer des niveaux d'accès`**
* Ajouter les niveaux suivants :&#x20;
  * &#x20;**auth/userinfo.email**&#x20;
  * **auth/userinfo.profile**&#x20;
  * **openid**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2F5gK3EijYAvZXtkhRcuKO%2Foauth-sso-scope.png?alt=media&#x26;token=9c02a561-4233-4b7d-82ba-2f46a8176441" alt=""><figcaption><p>Niveaux d'accès</p></figcaption></figure>

Depuis la page d'accueil, la nouvelle option de connexion Oauth SSO sera visible :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-ca2da70f06aa8758b2009503437ab6d3b4754107%2Foauth-sso-google-11.png?alt=media" alt="images/oauth-sso-google-11.png"><figcaption><p>Page d'accueil GLPI avec OAuth SSO</p></figcaption></figure>

{% hint style="info" %}
La première fois qu'un utilisateur se connectera, il lui sera demandé d'accepter les autorisations d'accès à son profil
{% endhint %}

***

## OKTA

### Création d'une application

* Rendez-vous d'abord sur GLPI et téléchargez le plugin Oauthsso
* Naviguez vers **Configuration > Applications Oauth SSO**
* Cliquez sur **Ajouter**

<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-66468a86f153e388333c2564b0981d799dcacbe7%2Fokta-2.png?alt=media" alt="images/okta-2.png"><figcaption></figcaption></figure></div>

* Gardez cette fenêtre active et conservez l'URL de rappel :

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

* Dans votre interface OKTA, rendez-vous sur **Applications**
* **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-e268ac9635db22fbb4cd85804d6901cc9245d737%2Fokta-4.png?alt=media" alt="images/okta-4.png"><figcaption></figcaption></figure>

* Sélectionnez l'option **OIDC -- OpenID Connect** dans le 1er encart et **Application Web** dans le second
* Cliquez sur **Suivant**

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

* Entrez un nom d'application et cochez la case **Identifiants client**

<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-e4713bf968bd7b30411e50812624540c9ed19fd2%2Fokta-6.png?alt=media" alt="images/okta-6.png"><figcaption></figcaption></figure></div>

* Entrez l'URL de retour, récupérée ci-dessus, dans les URIs de redirection de connexion.

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

### Affectations

* Dans la dernière boîte, sélectionnez l'option qui vous convient le mieux (ici nous autorisons tous les utilisateurs présents dans OKTA)
* Cliquez enfin sur **Enregistrer**

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

### Configuration GLPI

* Dans GLPI, retournez à la fenêtre de configuration du plugin Oauth SSO et renseignez les informations de votre tenant OKTA :

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

1. Donnez un nom à votre fournisseur, celui-ci apparaîtra sur la page de connexion.
2. Indiquez celui-ci comme actif
3. Entrez OKTA comme fournisseur Oauth
4. Entrez l'ID de l'application trouvé dans l'application précédemment créée dans OKTA

<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-6268efac85494a9dec1ba9c9cf15cd2be762f2ce%2Fokta-10.png?alt=media" alt="images/okta-10.png"><figcaption></figcaption></figure></div>

1. Spécifiez le champ ID à mapper avec OKTA
2. Spécifiez le secret client disponible dans OKTA dans l'application précédemment créée

<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-6f64766aad9d09b79b4b7f39ac4557af8ac87d57%2Fokta-11.png?alt=media" alt="images/okta-11.png"><figcaption></figcaption></figure></div>

7. Entrez le nom de votre instance OKTA ([https://XXXXXXXXX.okta.com](https://xxxxxxxxx.okta.com)), disponible dans l'e-mail de confirmation de création de compte.

* Cliquez sur **Add**
* Dans le plugin, vous verrez le message d'approbation :

<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-55f789719581c2739dc9240a7aebd8e6bb152fe9%2Fokta-12.png?alt=media" alt="images/okta-12.png"><figcaption></figcaption></figure></div>

Maintenant que la configuration est terminée, vous pouvez la tester avec un utilisateur.

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

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

***

## Keycloak

### Créer un REALM

* Après avoir installé keycloak, rendez-vous dans la console d'administration :

[http://XXXXXXXXXX:8080/admin](http://xxxxxxxxxx:8080/admin) ou [https://XXXXXXXXXX:8080/admin](https://xxxxxxxxxx:8080/admin)

* Créez votre **realm** en cliquant sur **master** en haut à gauche de votre écran
* Puis **create Realm**
* Donnez-lui un nom qui vous convient
* Cliquez sur **Create**

<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-d50282c9fa4af4b0b9713348db8e4caf9f55a064%2Fkeycloak-2.png?alt=media" alt="images/keycloak-2.png"><figcaption></figcaption></figure></div>

### Créer un utilisateur

* Rendez-vous ensuite dans l'onglet **Users**
* Puis **Create new user** (nous utiliserons un utilisateur local, mais vous pouvez synchroniser votre LDAP si besoin)

<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-00c0743504cefa4a077ddab875eae2c2e6a17dda%2Fkeycloak-3.png?alt=media" alt="images/keycloak-3.png"><figcaption></figcaption></figure></div>

* Créez votre utilisateur selon vos besoins, en n'oubliant pas de cocher la case Email verified
* Cliquez sur **Create** une fois vos informations saisies.

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

* Restez dans votre fiche utilisateur et cliquez sur **Credentials**
* Puis **Set pasword**

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

* Configurez le mot de passe utilisateur, en prenant soin d'indiquer que le mot de passe n'est pas temporaire
* Cliquez sur save puis **Save password**

<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-f47479eede5c082e488cf1a61331e2f89f3c75ca%2Fkeycloak-6.png?alt=media" alt="images/keycloak-6.png"><figcaption></figcaption></figure></div>

Vous pouvez vérifier que votre configuration est correcte en vous connectant sur la console de compte utilisateur :

[http://XXXXXXXXXXX/realms/GLPI/account/#/](http://xxxxxxxxxxx/realms/GLPI/account/#/) ou [https://XXXXXXXXXXX/realms/GLPI/account/#/](https://xxxxxxxxxxx/realms/GLPI/account/#/)

(Pensez à adapter le nom du realm si vous ne l'avez pas nommé GLPI).

Vous pourrez alors vous connecter sur la fiche de l'utilisateur créé précédemment ou sur un de vos utilisateurs LDAP.

### Créer un client

Nous pouvons maintenant enregistrer notre application GLPI auprès de Keycloak

* Rendez-vous dans **Clients**
* Create client

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

* Donnez un client ID à votre application, que vous devrez reporter dans la configuration Oauth SSO de GLPI
* Cliquez sur next et assurez-vous sur la page suivante que les options **standard flow** et **client authentication** sont actives
* Cliquez sur **Save**

Laissez cette page ouverte, nous y reviendrons plus tard.

<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-5226b70073a31f435d7539425b38bb13d0c73e9c%2Fkeycloak-8.png?alt=media" alt="images/keycloak-8.png"><figcaption></figcaption></figure></div>

### Configuration GLPI

* Rendez-vous dans GLPI
* Dans **Setup > Oauth SSO applications cliquez sur add** (en haut de votre écran)

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

* Commencez par récupérer l'URL de retour et collez-la dans le champ **valid redirect URIs** de Keycloak

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

* De retour dans la configuration du plugin Oauth SSO de GLPI, remplissez les champs requis :

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

1. Donnez un nom à votre provider, il apparaîtra sur la page de connexion des utilisateurs
2. Activez ce plugin afin qu'il soit visible et utilisable sur la page de connexion
3. Choisissez Keycloak comme provider Oauth
4. Entrez le nom du client défini précédemment
5. Récupérez le client secret depuis Keycloak (client, client\_name, credentials)

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

6. Entrez l'URL de découverte : <http://mondomaine/realms/monrealms/.well-known/openid-configuration>.

* Cliquez sur **Add**

Dans le plugin, pour voir le message d'approbation :

<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-67db1780c0a04094cb6e1311ebfd3b12127f24cc%2Fkeycloak-14.png?alt=media" alt="images/keycloak-14.png"><figcaption></figcaption></figure></div>

Maintenant que la configuration est terminée, vous pouvez tester la connexion avec l'utilisateur que vous avez créé précédemment, ou avec votre utilisateur LDAP.

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

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

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

***

## Règles d'attribution des autorisations

N'oubliez pas que l'authentification Oauth SSO permet **uniquement l'authentification**, dans le sens où aucune gestion d'utilisateur n'est effectuée suite à l'authentification.

Dans la plupart des cas, il sera donc nécessaire de mettre en place des règles d'attribution des autorisations à vos utilisateurs (pour leur donner un profil par exemple).

* Pour ce faire, rendez-vous dans **Administration > Règles > Règles d'attribution des autorisations à un utilisateur**.

Il n'y a pas de règles « obligatoires », à vous de créer la ou les règles qui vous semblent les plus adaptées à vos besoins selon les critères dont vous disposez.

Par exemple, une règle très simple

* Une règle très simple -> *Je souhaite que mes utilisateurs ayant une authentification SSO obtiennent le profil Self-Service*.

Je définis donc mes critères et mon action :

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

***

## Forcer l'authentification SSO

Grâce à la configuration de l'application Oauth SSO, vous pouvez masquer le champ de connexion à la base de données interne pour **forcer** la connexion avec votre application SSO

(**`Configuration`** > **`Oauth SSO applications`** > **`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-75aa2a23908e3900e802b5b701d7468bd6ca4af9%2Foauth-Entra-11.png?alt=media" alt="images/oauth-Entra-11.png"><figcaption></figcaption></figure></div>

## Ressources

* [Documentation Oauth SSO client pour GLPI](https://services.glpi-network.com/documentation/1731/file/README.md)
* [Documentation Microsoft Configure your App Service Or Entra Functions app to use Entra AD login](https://learn.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad?tabs=workforce-tenant)
* [Documentation OKTA Configure single Sign-On options](https://help.okta.com/oie/en-us/content/topics/apps/apps_overview_of_managing_apps_and_sso.htm)
* [Documentation Keycloak Managing OpenID connect Clients](https://www.keycloak.org/docs/latest/server_admin/#_oidc_clients)

***

## 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/authentification-et-sso" class="button secondary">Aller à la FAQ</a>
