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

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

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

#### Przegląd

Ta sekcja zawiera wytyczne dotyczące konfigurowania logowania jednokrotnego i konfiguracja kont użytkowników w Zabbix 
z Microsoft Entra ID (dawniej Microsoft Azure Active Directory) przy użyciu uwierzytelniania SAML 2.0.

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

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

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

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

1\. Zaloguj się do centrum administracyjnego Microsoft Entra w [Microsoft Entra ID](https://entra.microsoft.com). Do celów testowych możesz utworzyć bezpłatne konto próbne w Microsoft Entra ID.

2\. W centrum administracyjnym Microsoft Entra wybierz *Applications* -> *Enterprise applications* -> *New application* -> *Create your own application*.

3\. Dodaj nazwę swojej aplikacji i wybierz opcję *Integrate any other application...*. Następnie kliknij *Create*.

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

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

[comment]: # ({70c506a8-82aca309})
##### Konfigurowanie pojedynczego logowania

1\. Na stronie aplikacji przejdź do *Set up single sign on* i kliknij *Get started*. Następnie wybierz *SAML*.

2\. Edytuj *Basic SAML Configuration*:

-   W *Identifier (Entity ID)* ustaw unikalną nazwę identyfikującą Twoją aplikację w Microsoft Entra ID, na przykład `zabbix`;
-   W *Reply URL (Assertion Consumer Service URL)* ustaw punkt końcowy pojedynczego logowania Zabbix: `https://<path-to-zabbix-ui>/index_sso.php?acs`:

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

Pamiętaj, że wymagany jest protokół "https". Aby to działało z Zabbix, należy dodać do `conf/zabbix.conf.php` następującą linię:

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

3\. Edytuj *Attributes & Claims*. Musisz dodać wszystkie atrybuty, które chcesz przekazać do Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Nazwy atrybutów są dowolne. Można użyć różnych nazw atrybutów, jednak wymagane jest, aby odpowiadały one odpowiedniej wartości pola w ustawieniach SAML Zabbix.

-   Kliknij *Add new claim*, aby dodać atrybut:

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

-   Kliknij *Add a group claim*, aby dodać atrybut służący do przekazywania grup do Zabbix:

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

W tym roszczeniu ważne jest, aby do Zabbix były przekazywane nazwy grup (a nie identyfikatory grup) przez wybrany *Source attribute*. W przeciwnym razie aprowizacja użytkowników JIT nie będzie działać poprawnie.

4\. W *SAML Certificates* pobierz certyfikat Base64 udostępniony przez Entra ID i umieść go w `conf/certs` instalacji frontend Zabbix. 

Nadaj mu uprawnienia 644, uruchamiając:

    chmod 644 entra.cer

Upewnij się, że `conf/zabbix.conf.php` zawiera linię:

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

5\. Użyj wartości z *Set up <your app name>* w Entra ID, aby skonfigurować uwierzytelnianie SAML Zabbix (zobacz następna sekcja):

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

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

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

1\. W Zabbix przejdź do [ustawień SAML](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix) i wypełnij opcje konfiguracji na podstawie konfiguracji Entra ID:

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

|Pole Zabbix|Pole konfiguracji w Entra ID|Przykładowa wartość|
|----|----|--|
|*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`|

Wymagane jest również skonfigurowanie mapowania grup użytkowników. Mapowanie mediów jest opcjonalne.

Kliknij *Update*, aby zapisać te ustawienia.

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

[comment]: # ({87b1b3e7-8c2fcfa4})
#### Provisioning użytkowników SCIM

1\. Na stronie aplikacji w Entra ID, z głównego menu otwórz stronę Provisioning. Kliknij *Get started*, a następnie wybierz tryb Automatic provisioning:

-   W *Tenant URL* ustaw następującą wartość: `https://<path-to-zabbix-ui>/api_scim.php`
-   W *Secret token* wprowadź token API Zabbix z uprawnieniami Super admin.
-   Kliknij *Test connection*, aby sprawdzić, czy połączenie zostało nawiązane. 

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

2\. Teraz możesz dodać wszystkie atrybuty, które będą przekazywane przez SCIM do Zabbix. Aby to zrobić, kliknij *Mappings*, a następnie *Provision Microsoft Entra ID Users*.

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

Na dole listy Attribute Mapping włącz *Show advanced options*, a następnie kliknij *Edit attribute list for customappsso*.

Na dole listy atrybutów dodaj własne atrybuty typu 'String':

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

Zapisz listę.

3\. Teraz możesz dodać mapowania dla dodanych atrybutów. Na dole listy Attribute Mapping kliknij *Add New Mapping* i utwórz mapowania pokazane poniżej:

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

Gdy wszystkie mapowania zostaną dodane, zapisz listę mapowań.

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

4\. Jako warunek wstępny provisioning użytkowników do Zabbix, musisz mieć skonfigurowanych użytkowników i grupy w Entra ID. 

Aby to zrobić, przejdź do *Microsoft Entra admin center*, a następnie dodaj użytkowników/grupy na odpowiednich stronach Users i Groups.

5\. Gdy użytkownicy i grupy zostaną utworzeni w Entra ID, możesz przejść do menu *Users and groups* swojej aplikacji i dodać ich do aplikacji.

6\. Przejdź do menu *Provisioning* swojej aplikacji i kliknij *Start provisioning*, aby rozpocząć provisioning użytkowników do Zabbix.

Należy pamiętać, że żądanie PATCH Users w Entra ID nie obsługuje zmian w media.

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

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Podpisywanie żądań uwierzytelniania

Można skonfigurować Entra ID tak, aby [weryfikował podpis](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) podpisanych żądań uwierzytelniania.

Aby to działało, utwórz klucze publiczny/prywatny:

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

Przypisz uprawnienia:

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

Zaktualizuj konfigurację frontendu Zabbix, dodając:

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

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

[comment]: # ({612478ad-80731412})
#### Rozwiązywanie problemów

Problemy z uwierzytelnianiem mogą wystąpić w przeglądarkach MicroSoft Edge, gdy użytkownik próbujący zalogować się do Zabbix za pomocą SAML jest już zalogowany w profilu MicroSoft Edge. Oznaką takiego problemu może być możliwość zalogowania się do Zabbix przy użyciu MicroSoft Edge w trybie prywatnym.

Aby uniknąć problemów z uwierzytelnianiem w tym przypadku, może być konieczne ustawienie `requestedAuthnContext` na "false" w pliku konfiguracyjnym frontend Zabbix (*zabbix.conf.php*).

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

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