[comment]: # ({2ac94e21-11206317})
# 12 Configuration de SAML avec Microsoft Entra ID

[comment]: # ({/2ac94e21-11206317})

[comment]: # ({8babfe4a-d1a8a2fc})
#### Vue d'ensemble

Cette section fournit des directives pour configurer l’authentification unique et l’approvisionnement des utilisateurs dans Zabbix à partir de Microsoft Entra ID (anciennement Microsoft Azure Active Directory) à l’aide de l’authentification SAML 2.0.

[comment]: # ({/8babfe4a-d1a8a2fc})

[comment]: # ({b4d9f9a1-ed685e3c})
#### Configuration de Microsoft Entra ID

[comment]: # ({/b4d9f9a1-ed685e3c})

[comment]: # ({55e50911-440025da})
##### Création d’une application

1\. Connectez-vous au centre d’administration Microsoft Entra à l’adresse [Microsoft Entra ID](https://entra.microsoft.com).
À des fins de test, vous pouvez créer un compte d’essai gratuit dans Microsoft Entra ID.

2\. Dans le centre d’administration Microsoft Entra, sélectionnez *Applications* -> *Applications d’entreprise* -> *Nouvelle application* -> *Créez votre propre application*.

3\. Ajoutez le nom de votre application et sélectionnez l’option *Intégrer toute autre application...*.
Ensuite, cliquez sur *Créer*.

![](../../../../assets/en/manual/appendix/install/entra_create_app.png){width="550"}

[comment]: # ({/55e50911-440025da})

[comment]: # ({d3006f29-82aca309})
##### Configuration de l’authentification unique

1\. Sur la page de votre application, accédez à *Set up single sign on* et cliquez sur *Get started*.
Sélectionnez ensuite *SAML*.

2\. Modifiez *Basic SAML Configuration* :

-   Dans *Identifier (Entity ID)*, définissez un nom unique pour identifier votre application auprès de Microsoft Entra ID, par exemple `zabbix` ;
-   Dans *Reply URL (Assertion Consumer Service URL)*, définissez le point de terminaison d’authentification unique Zabbix : `https://<path-to-zabbix-ui>/index_sso.php?acs` :

![](../../../../assets/en/manual/appendix/install/entra_basic_saml.png){width="600"}

Notez que "https" est requis.
Pour que cela fonctionne avec Zabbix, il est nécessaire d’ajouter la ligne suivante à `conf/zabbix.conf.php` :

```
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
```

3\. Modifiez *Attributes & Claims*.
Vous devez ajouter tous les attributs que vous souhaitez transmettre à Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Les noms des attributs sont arbitraires.
Des noms d’attributs différents peuvent être utilisés ; toutefois, il est nécessaire qu’ils correspondent à la valeur du champ respectif dans les paramètres SAML de Zabbix.

-   Cliquez sur *Add new claim* pour ajouter un attribut :

![](../../../../assets/en/manual/appendix/install/azure_claim.png)

-   Cliquez sur *Add a group claim* pour ajouter un attribut permettant de transmettre des groupes à Zabbix :

![](../../../../assets/en/manual/appendix/install/entra_claim_group.png){width="600"}

Dans cette revendication, il est important que les noms des groupes (et non les ID des groupes) soient transmis à Zabbix par l’attribut *Source attribute* sélectionné.
Sinon, l’approvisionnement JIT des utilisateurs ne fonctionnera pas correctement.

4\. Dans *SAML Certificates*, téléchargez le certificat Base64 fourni par Entra ID et placez-le dans `conf/certs` de l’installation du frontend Zabbix.

Définissez les permissions 644 sur celui-ci en exécutant :

```bash
chmod 644 entra.cer
```

5\. Utilisez les valeurs de *Set up <your app name>* dans Entra ID pour configurer l’authentification SAML de Zabbix (voir la section suivante) :

![](../../../../assets/en/manual/appendix/install/entra_sso_settings.png){width="550"}

[comment]: # ({/d3006f29-82aca309})

[comment]: # ({a9cc51da-b1c1c877})
#### Configuration de Zabbix

1\. Dans Zabbix, accédez aux [paramètres SAML](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix) et renseignez les options de configuration en fonction de la configuration Entra ID :

![](../../../../assets/en/manual/appendix/install/entra_zabbix_conf.png){width="600"}

|Champ Zabbix|Champ de configuration dans Entra ID|Valeur d'exemple|
|----|----|--|
|*ID d'entité IdP*|Identificateur Microsoft Entra| |
|*URL du service SSO*|URL de connexion| |
|*URL du service SLO*|URL de déconnexion| |
|*ID d'entité SP*|Identifiant (ID d'entité)| |
|*Attribut du nom d'utilisateur*|Attribut personnalisé (revendication)|`user_email`|
|*Attribut du nom de groupe*|Attribut personnalisé (revendication)|`groups`|
|*Attribut du prénom de l'utilisateur*|Attribut personnalisé (revendication)|`user_name`|
|*Attribut du nom de famille de l'utilisateur*|Attribut personnalisé (revendication)|`user_lastname`|

2\. Ajoutez le certificat Base64 fourni par Entra ID.

Si `$SSO['CERT_STORAGE'] = 'database'` est défini dans zabbix.conf.php, vous pouvez coller le texte du certificat ou téléverser le fichier du certificat dans l'interface lors de la configuration SAML — aucun fichier n'est requis sur le système de fichiers.

Si `$SSO['CERT_STORAGE'] = 'file'` est défini dans zabbix.conf.php, le certificat doit être rendu disponible sur le système de fichiers (par défaut dans ui/conf/certs ou dans le chemin configuré dans zabbix.conf.php) et l'interface ne stockera pas les certificats dans la base de données. 
Notez que si `$SSO['CERT_STORAGE']` n'est pas défini ou est commenté, le stockage dans des fichiers est supposé et les certificats sont lus depuis ui/conf/certs.

Il est également nécessaire de configurer le mappage des groupes d'utilisateurs.
Le mappage des médias est facultatif.

3\. Cliquez sur le bouton *Update* pour enregistrer ces paramètres.

[comment]: # ({/a9cc51da-b1c1c877})

[comment]: # ({ecf9190c-8c2fcfa4})
#### Provisionnement des utilisateurs SCIM

1\. Sur la page de votre application Entra ID, ouvrez la page *Provisioning* depuis le menu principal.
Cliquez sur *Get started*, puis sélectionnez le mode de provisionnement automatique :

-   Dans *Tenant URL*, définissez la valeur suivante : `https://<path-to-zabbix-ui>/api_scim.php`
-   Dans *Secret token*, saisissez un jeton d'API Zabbix avec des permissions de Super admin.
-   Cliquez sur *Test connection* pour vérifier si la connexion est établie.

![](../../../../assets/en/manual/appendix/install/entra_api_connection.png){width="550"}

2\. Vous pouvez maintenant ajouter tous les attributs qui seront transmis avec SCIM à Zabbix.
Pour cela, cliquez sur *Mappings*, puis sur *Provision Microsoft Entra ID Users*.

![](../../../../assets/en/manual/appendix/install/entra_scim_mappings_add.png){width="550"}

En bas de la liste *Attribute Mapping*, activez *Show advanced options*, puis cliquez sur *Edit attribute list for customappsso*.

En bas de la liste des attributs, ajoutez vos propres attributs avec le type 'String' :

![](../../../../assets/en/manual/appendix/install/azure_scim_attrib.png){width="550"}

Enregistrez la liste.

3\. Vous pouvez maintenant ajouter des mappages pour les attributs ajoutés.
En bas de la liste *Attribute Mapping*, cliquez sur *Add New Mapping* et créez les mappages comme indiqué ci-dessous :

![](../../../../assets/en/manual/appendix/install/azure_scim_mapping.png){width="550"}

Lorsque tous les mappages ont été ajoutés, enregistrez la liste des mappages.

![](../../../../assets/en/manual/appendix/install/azure_scim_mappings.png){width="550"}

4\. Comme prérequis au provisionnement des utilisateurs dans Zabbix, vous devez avoir des utilisateurs et des groupes configurés dans Entra ID.

Pour cela, accédez à *Microsoft Entra admin center*, puis ajoutez des utilisateurs/groupes dans les pages *Users* et *Groups* correspondantes.

5\. Une fois les utilisateurs et les groupes créés dans Entra ID, vous pouvez accéder au menu *Users and groups* de votre application et les ajouter à l'application.

6\. Accédez au menu *Provisioning* de votre application, puis cliquez sur *Start provisioning* pour provisionner les utilisateurs dans Zabbix.

Notez que la requête PATCH des utilisateurs dans Entra ID ne prend pas en charge les modifications des médias.

[comment]: # ({/ecf9190c-8c2fcfa4})

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Signature des requêtes d'authentification

Il est possible de configurer Entra ID pour [valider la signature](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) des requêtes d'authentification signées.

Pour que cela fonctionne, créez des clés publique/privée :

```bash
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
```

Attribuez les permissions :

```bash
chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
```

Mettez à jour la configuration du frontend Zabbix en ajoutant :

```php
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
```

[comment]: # ({/c0cb36b9-ff9d0f6b})

[comment]: # ({8b9836aa-80731412})
#### Dépannage

Des problèmes d'authentification peuvent survenir avec les navigateurs MicroSoft Edge lorsqu'un utilisateur, essayant de se connecter à Zabbix via SAML, est déjà connecté avec le profil MicroSoft Edge.
Un signe de ce problème est que l'utilisateur peut être en mesure de se connecter à Zabbix en utilisant MicroSoft Edge en mode privé.

Pour éviter les problèmes d'authentification dans ce cas, il peut être nécessaire de définir `requestedAuthnContext` sur "false" dans le fichier de configuration du frontend Zabbix (*zabbix.conf.php*).

```php
$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
]; 
```

[comment]: # ({/8b9836aa-80731412})
