[comment]: # ({2ac94e21-11206317})
# 12 SAML iestatīšana ar Microsoft Entra ID

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

[comment]: # ({8babfe4a-d1a8a2fc})
#### Pārskats

Šajā sadaļā ir sniegtas vadlīnijas vienotās pierakstīšanās un lietotāju nodrošināšanas konfigurēšanai Zabbix 
no Microsoft Entra ID (iepriekš Microsoft Azure Active Directory), izmantojot SAML 2.0 autentifikāciju.

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

[comment]: # ({b4d9f9a1-ed685e3c})
#### Microsoft Entra ID konfigurācija

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

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

1\. Piesakieties Microsoft Entra administrēšanas centrā vietnē [Microsoft Entra ID](https://entra.microsoft.com). Testēšanas nolūkos varat izveidot bezmaksas izmēģinājuma kontu Microsoft Entra ID.

2\. Microsoft Entra administrēšanas centrā atlasiet *Applications* -> *Enterprise applications* -> *New application* -> *Create your own application*.

3\. Pievienojiet savas lietotnes nosaukumu un atlasiet opciju *Integrate any other application...*. Pēc tam noklikšķiniet uz *Create*.

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

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

[comment]: # ({70c506a8-82aca309})
##### Vienreizējās pierakstīšanās iestatīšana

1\. Savā lietotnes lapā atveriet *Set up single sign on* un noklikšķiniet uz *Get started*. Pēc tam atlasiet *SAML*.

2\. Rediģējiet *Basic SAML Configuration*:

-   Laukā *Identifier (Entity ID)* norādiet unikālu nosaukumu, lai identificētu jūsu lietotni Microsoft Entra ID, piemēram, `zabbix`;
-   Laukā *Reply URL (Assertion Consumer Service URL)* norādiet Zabbix vienreizējās pierakstīšanās galapunktu: `https://<path-to-zabbix-ui>/index_sso.php?acs`:

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

Ņemiet vērā, ka ir nepieciešams "https". Lai tas darbotos ar Zabbix, `conf/zabbix.conf.php` failā ir jāpievieno šāda rinda:

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

3\. Rediģējiet *Attributes & Claims*. Jums jāpievieno visi atribūti, kurus vēlaties nodot Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Atribūtu nosaukumi ir brīvi izvēlami. Var izmantot dažādus atribūtu nosaukumus, tomēr tiem ir jāsakrīt ar attiecīgā lauka vērtību Zabbix SAML iestatījumos.

-   Noklikšķiniet uz *Add new claim*, lai pievienotu atribūtu:

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

-   Noklikšķiniet uz *Add a group claim*, lai pievienotu atribūtu grupu nodošanai Zabbix:

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

Šajā claim ir svarīgi, lai Zabbix tiktu nodoti grupu nosaukumi (nevis grupu ID), izmantojot izvēlēto *Source attribute*. Pretējā gadījumā JIT lietotāju nodrošināšana nedarbosies pareizi.

4\. Sadaļā *SAML Certificates* lejupielādējiet Entra ID nodrošināto Base64 sertifikātu un ievietojiet to Zabbix lietotāja saskarnes instalācijas `conf/certs` mapē. 

Piešķiriet tam 644 atļaujas, izpildot:

    chmod 644 entra.cer

Pārliecinieties, ka `conf/zabbix.conf.php` satur šādu rindu:

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

5\. Izmantojiet vērtības no *Set up <your app name>* Entra ID, lai konfigurētu Zabbix SAML autentifikāciju (skatiet nākamo sadaļu):

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

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

[comment]: # ({757a04f4-b1c1c877})
#### Zabbix konfigurācija

1\. Zabbix sadaļā atveriet [SAML iestatījumus](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix) 
un aizpildiet konfigurācijas opcijas, pamatojoties uz Entra ID konfigurāciju:

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

|Zabbix field|Setup field in Entra ID|Sample value|
|----|----|--|
|*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`|

Ir arī jākonfigurē lietotāju grupu kartēšana. Mediju kartēšana ir neobligāta.

Noklikšķiniet uz *Update*, lai saglabātu šos iestatījumus.

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

[comment]: # ({87b1b3e7-8c2fcfa4})
#### SCIM lietotāju nodrošināšana

1\. Savā Entra ID lietotnes lapā galvenajā izvēlnē atveriet lapu *Provisioning*. Noklikšķiniet uz *Get started* un pēc tam atlasiet automātiskās nodrošināšanas režīmu:

-   Laukā *Tenant URL* norādiet šādu vērtību: `https://<path-to-zabbix-ui>/api_scim.php`
-   Laukā *Secret token* ievadiet Zabbix API tokenu ar Super admin tiesībām.
-   Noklikšķiniet uz *Test connection*, lai pārbaudītu, vai savienojums ir izveidots. 

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

2\. Tagad varat pievienot visus atribūtus, kas tiks nodoti ar SCIM uz Zabbix. Lai to izdarītu, noklikšķiniet uz *Mappings* un pēc tam uz *Provision Microsoft Entra ID Users*.

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

Atribūtu kartēšanas saraksta apakšā iespējojiet *Show advanced options* un pēc tam noklikšķiniet uz *Edit attribute list for customappsso*.

Atribūtu saraksta apakšā pievienojiet savus atribūtus ar tipu 'String':

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

Saglabājiet sarakstu.

3\. Tagad varat pievienot kartējumus pievienotajiem atribūtiem. Atribūtu kartēšanas saraksta apakšā noklikšķiniet uz *Add New Mapping* un izveidojiet kartējumus, kā parādīts tālāk:

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

Kad visi kartējumi ir pievienoti, saglabājiet kartējumu sarakstu.

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

4\. Kā priekšnoteikums lietotāju nodrošināšanai Zabbix, jums ir jākonfigurē lietotāji un grupas Entra ID.

Lai to izdarītu, dodieties uz *Microsoft Entra admin center* un pēc tam pievienojiet lietotājus/grupas attiecīgajās lapās *Users* un *Groups*.

5\. Kad lietotāji un grupas ir izveidoti Entra ID, varat doties uz savas lietotnes izvēlni *Users and groups* un pievienot tos lietotnei.

6\. Dodieties uz savas lietotnes izvēlni *Provisioning* un noklikšķiniet uz *Start provisioning*, lai lietotāji tiktu nodrošināti Zabbix.

Ņemiet vērā, ka Entra ID lietotāju PATCH pieprasījums neatbalsta izmaiņas vidē.

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

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Autentifikācijas pieprasījuma parakstīšana

Ir iespējams konfigurēt Entra ID, lai [validētu parakstu](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) parakstītiem autentifikācijas pieprasījumiem.

Lai tas darbotos, izveidojiet publisko/privāto atslēgu pāri:

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

Piešķiriet atļaujas:

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

Atjauniniet Zabbix lietotāja saskarne konfigurāciju, pievienojot:

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

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

[comment]: # ({612478ad-80731412})
#### Problēmu novēršana

Autentifikācijas problēmas var rasties ar MicroSoft Edge pārlūkprogrammām, ja lietotājs, mēģinot pieteikties Zabbix, izmantojot SAML, jau ir pieteicies ar MicroSoft Edge profilu. Kā šādas problēmas pazīme lietotājs var spēt pieteikties Zabbix, izmantojot MicroSoft Edge privātajā režīmā.

Lai šādā gadījumā izvairītos no autentifikācijas problēmām, var būt nepieciešams Zabbix lietotāja saskarnes konfigurācijas failā (*zabbix.conf.php*) iestatīt `requestedAuthnContext` uz "false".

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

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