[comment]: # ({2ac94e21-11206317})
# 12 Configurazione SAML con Microsoft Entra ID

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

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

Questa sezione fornisce linee guida per configurare il single sign-on e il provisioning degli utenti in Zabbix 
da Microsoft Entra ID (in precedenza Microsoft Azure Active Directory) utilizzando l'autenticazione SAML 2.0.

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

[comment]: # ({b4d9f9a1-ed685e3c})
#### Configurazione di Microsoft Entra ID

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

[comment]: # ({42f21e5b-440025da})
##### Creazione dell'applicazione

1\. Accedi a Microsoft Entra admin center su [Microsoft Entra ID](https://entra.microsoft.com). Per scopi di test, puoi creare un account di prova gratuito in Microsoft Entra ID.

2\. In Microsoft Entra admin center seleziona *Applications* -> *Enterprise applications* -> *New application* -> *Create your own application*.

3\. Aggiungi il nome della tua app e seleziona l'opzione *Integrate any other application...*. Dopodiché, fai clic su *Create*.

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

[comment]: # ({/42f21e5b-440025da})

[comment]: # ({70c506a8-82aca309})
##### Configurazione del single sign-on

1\. Nella pagina della tua applicazione, vai su *Set up single sign on* e fai clic su *Get started*. Quindi seleziona *SAML*.

2\. Modifica *Basic SAML Configuration*:

-   In *Identifier (Entity ID)* imposta un nome univoco per identificare la tua app in Microsoft Entra ID, ad esempio `zabbix`;
-   In *Reply URL (Assertion Consumer Service URL)* imposta l'endpoint di single sign-on di Zabbix: `https://<path-to-zabbix-ui>/index_sso.php?acs`:

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

Nota che "https" è obbligatorio. Per farlo funzionare con Zabbix, è necessario aggiungere a `conf/zabbix.conf.php` la seguente riga:

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

3\. Modifica *Attributes & Claims*. Devi aggiungere tutti gli attributi che desideri passare a Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

I nomi degli attributi sono arbitrari. È possibile usare nomi di attributi diversi, tuttavia è necessario che corrispondano al rispettivo valore del campo nelle impostazioni SAML di Zabbix.

-   Fai clic su *Add new claim* per aggiungere un attributo:

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

-   Fai clic su *Add a group claim* per aggiungere un attributo per passare i gruppi a Zabbix:

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

In questa claim è importante che i nomi dei gruppi (anziché gli ID dei gruppi) vengano passati a Zabbix tramite il *Source attribute* selezionato. In caso contrario, il provisioning JIT degli utenti non funzionerà correttamente.

4\. In *SAML Certificates* scarica il certificato Base64 fornito da Entra ID e inseriscilo in `conf/certs` dell'installazione del frontend di Zabbix. 

Imposta i permessi 644 eseguendo:

    chmod 644 entra.cer

Assicurati che `conf/zabbix.conf.php` contenga la riga:

```
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
```

5\. Usa i valori di *Set up <your app name>* in Entra ID per configurare l'autenticazione SAML di Zabbix (vedi la sezione successiva):

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

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

[comment]: # ({757a04f4-b1c1c877})
#### Configurazione di Zabbix

1\. In Zabbix, vai alle [impostazioni SAML](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix) e compila le opzioni di configurazione in base alla configurazione di Entra ID:

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

|Campo Zabbix|Campo di configurazione in Entra ID|Valore di esempio|
|----|----|--|
|*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`|

È inoltre necessario configurare il mapping dei gruppi utente. Il mapping dei media è facoltativo.

Fai clic su *Update* per salvare queste impostazioni.

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

[comment]: # ({87b1b3e7-8c2fcfa4})
#### Provisioning utenti SCIM

1\. Nella pagina dell'applicazione Entra ID, dal menu principale apri la pagina Provisioning. Fai clic su *Get started* e poi seleziona la modalità di provisioning Automatic:

-   In *Tenant URL*, imposta il seguente valore: `https://<path-to-zabbix-ui>/api_scim.php`
-   In *Secret token*, inserisci un token API di Zabbix con permessi di Super admin.
-   Fai clic su *Test connection* per verificare se la connessione è stabilita. 

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

2\. Ora puoi aggiungere tutti gli attributi che verranno passati tramite SCIM a Zabbix. Per farlo, fai clic su *Mappings* e poi su *Provision Microsoft Entra ID Users*.

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

In fondo all'elenco Attribute Mapping, abilita *Show advanced options*, quindi fai clic su *Edit attribute list for customappsso*.

In fondo all'elenco degli attributi, aggiungi i tuoi attributi con tipo 'String':

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

Salva l'elenco.

3\. Ora puoi aggiungere le mappature per gli attributi aggiunti. In fondo all'elenco Attribute Mapping, fai clic su *Add New Mapping* e crea le mappature come mostrato di seguito:

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

Quando tutte le mappature sono state aggiunte, salva l'elenco delle mappature.

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

4\. Come prerequisito per il provisioning degli utenti in Zabbix, devi avere utenti e gruppi configurati in Entra ID. 

Per farlo, vai su *Microsoft Entra admin center* e aggiungi utenti/gruppi nelle rispettive pagine Users e Groups.

5\. Quando utenti e gruppi sono stati creati in Entra ID, puoi andare al menu *Users and groups* della tua applicazione e aggiungerli all'app.

6\. Vai al menu *Provisioning* della tua app e fai clic su *Start provisioning* per eseguire il provisioning degli utenti in Zabbix.

Nota che la richiesta PATCH Users in Entra ID non supporta modifiche in media.

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

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Firma delle richieste di autenticazione

È possibile configurare Entra ID per [convalidare la firma](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) delle richieste di autenticazione firmate.

Per farlo, creare chiavi pubblica/privata:

```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
```

Assegnare i permessi:

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

Aggiornare la configurazione del frontend di Zabbix aggiungendo:

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

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

[comment]: # ({612478ad-80731412})
#### Risoluzione dei problemi

Possono verificarsi problemi di autenticazione con i browser MicroSoft Edge quando un utente, tentando di accedere a Zabbix tramite SAML, ha già effettuato l'accesso con il profilo MicroSoft Edge. Un segnale di questo problema è che l'utente potrebbe riuscire ad accedere a Zabbix usando MicroSoft Edge in modalità privata.

Per evitare problemi di autenticazione in questo caso, potrebbe essere necessario impostare `requestedAuthnContext` su "false" nel file di configurazione del frontend di Zabbix (*zabbix.conf.php*).

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

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