[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]: # ({42f21e5b-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éer 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]: # ({/42f21e5b-440025da})

[comment]: # ({70c506a8-82aca309})
##### Configuration de l'authentification unique

1\. Dans la page de votre application, allez dans *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 de 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. Différents noms d'attributs peuvent être utilisés, mais ils doivent correspondre à 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 les groupes à Zabbix :

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

Il est important, dans cette revendication, que les noms des groupes (plutôt que les ID de groupe) soient transmis à Zabbix par l'*Source attribute* sélectionné. Sinon, le provisionnement 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 de l'interface Zabbix. 

Définissez les permissions 644 sur ce fichier en exécutant :

    chmod 644 entra.cer

Assurez-vous que `conf/zabbix.conf.php` contient la ligne :

```
$SSO['IDP_CERT'] = 'conf/certs/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]: # ({/70c506a8-82aca309})

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

1\. Dans Zabbix, allez dans les [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 d'Entra ID :

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

|Champ Zabbix|Champ de configuration dans Entra ID|Valeur d'exemple|
|----|----|--|
|*IdP entity ID*|Microsoft Entra identifier| |
|*SSO service URL*|Login URL| |
|*SLO service URL*|Logout URL| |
|*SP entity ID*|Identifier (Entity ID)| |
|*Username attribute*|Custom attribute (claim)|`user_email`|
|*Group name attribute*|Custom attribute (claim)|`groups`|
|*User name attribute*|Custom attribute (claim)|`user_name`|
|*User last name attribute*|Custom attribute (claim)|`user_lastname`|

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

Cliquez sur *Update* pour enregistrer ces paramètres.

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

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

1\. Dans la page de votre application Entra ID, ouvrez le menu principal et accédez à la page Provisioning. 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 API Zabbix avec les permissions 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 via 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"}

Une fois tous les mappages 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 configuré des utilisateurs et des groupes 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 aller dans le 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 vers Zabbix.

Notez que la requête PATCH Users dans Entra ID ne prend pas en charge les modifications en cours de média.

[comment]: # ({/87b1b3e7-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]: # ({612478ad-80731412})
#### Dépannage

Des problèmes d'authentification peuvent survenir avec les navigateurs MicroSoft Edge lorsqu'un utilisateur, en 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 de l'interface Zabbix (*zabbix.conf.php*).

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

[comment]: # ({/612478ad-80731412})
