[comment]: # ({28802075-11206317})
# 11. Настройка SAML с Microsoft Entra ID

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

[comment]: # ({375b74d6-d1a8a2fc})
#### Обзор

В этом разделе приведены рекомендации по настройке единого входа в Zabbix
из Microsoft Entra ID (ранее Microsoft Azure Active Directory) с использованием аутентификации SAML 2.0.

Обратите внимание, что для работы единого входа имя пользователя должно существовать в Zabbix, однако его пароль Zabbix использоваться не будет. Если аутентификация прошла успешно, то Zabbix сопоставит локальное имя пользователя с атрибутом имени пользователя, возвращаемым SAML.

[comment]: # ({/375b74d6-d1a8a2fc})

[comment]: # ({b4d9f9a1-ed685e3c})
#### Настройка Microsoft Entra ID

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

[comment]: # ({42f21e5b-440025da})
##### Создание приложения

1\. Войдите в центр администрирования Microsoft Entra по адресу [Microsoft Entra ID](https://entra.microsoft.com). Для тестирования вы можете создать бесплатную пробную учётную запись в Microsoft Entra ID.

2\. В центре администрирования Microsoft Entra выберите *Applications (Приложения)* -> *Enterprise applications (Корпоративные приложения)* -> *New application (Новое приложение)* -> *Create your own application (Создать собственное приложение)*.

3\. Добавьте имя своего приложения и выберите опцию *Integrate any other application... (Интеграция любого другого приложения...)*. После этого нажмите *Create (Создать)*.

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

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

[comment]: # ({86fef1ed-82aca309})
##### Настройка единого входа

1\. На странице приложения перейдите в раздел *Set up single sign on (Настройка единого входа)* и нажмите *Get started (Начать)*. Затем выберите *SAML*.

2\. Отредактируйте *Basic SAML Configuration (Базовую конфигурацию SAML)*:

-   В поле *Identifier (Entity ID)* задайте уникальное имя для идентификации вашего приложения в Azure Active Directory, например, `zabbix`;
-   В поле *Reply URL (Assertion Consumer Service URL)* задайте конечную точку единого входа Zabbix: `https://<путь-к-веб-интерфейсу-zabbix>/index_sso.php?acs`:

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

Обратите внимание, что «https» является обязательным. Чтобы это работало с Zabbix, необходимо добавить в `conf/zabbix.conf.php` следующую строку:

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

3\. Отредактируйте *Attributes & Claims*. Вы должны добавить все атрибуты, которые хотите передать в Zabbix (в данном случае, `user_email`).
\
Имена атрибутов произвольны. Можно использовать разные имена атрибутов, однако необходимо, чтобы они совпадали со значениями соответствующего поля в настройках SAML в Zabbix.

-   Нажмите *Add new claim (Добавить новое утверждение)*, чтобы добавить атрибут:

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

4\. В *SAML Certificates (Сертификаты SAML)* загрузите сертификат Base64, предоставленный Entra ID, и поместите его в `conf/certs` вашей инсталляции веб-интерфейса Zabbix.

Установите для него права доступа 644, выполнив:

    chmod 644 entra.cer

Убедитесь, что `conf/zabbix.conf.php` содержит строку:

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

5\. Используйте значения из *Set up <имя вашего приложения>* в Entra ID для настройки аутентификации SAML в Zabbix (см. следующий раздел):

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

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

[comment]: # ({29ded936-b1c1c877})
#### Настройка Zabbix

1\. В Zabbix перейдите в [Настройки SAML (SAML settings)](/manual/web_interface/frontend_sections/users/authentication/saml#настройка-zabbix) 
и заполните параметры конфигурации на основе конфигурации Entra ID:

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

|Поле Zabbix|Поле настроек в Entra ID|Пример значения|
|----|----|--|
|*IdP entity ID*|Microsoft Entra identifier| |
|*URL единого входа*<br>*(SSO service URL)*|Login URL| |
|*URL единого выхода*<br>*(SLO service URL)*|Logout URL| |
|*ID объекта SP*<br>*(SP entity ID)*|Identifier (Entity ID)| |
|*Атрибут имени пользователя*<br>*(Username attribute)*|Custom attribute (claim)|`user_email`|

Нажмите *Update (Обновить)*, чтобы сохранить эти настройки.

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

[comment]: # ({c0cb36b9-389c9019})
#### Подписание запросов на аутентификацию

Entra ID можно настроить для [проверки подписи](https://learn.microsoft.com/ru-ru/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) подписанных запросов на аутентификацию.

Чтобы это заработало, создайте открытый и закрытый ключи:

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

Назначьте права доступа:

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

Обновите конфигурацию веб-интерфейса Zabbix, добавив:

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

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

[comment]: # ({612478ad-95037e87})
#### Устранение неполадок

Проблемы с аутентификацией могут возникать в браузерах MicroSoft Edge, когда пользователь, пытающийся войти в Zabbix через SAML, уже вошёл в систему с профилем MicroSoft Edge. Признаком такой проблемы может быть возможность входа в Zabbix через MicroSoft Edge в приватном режиме.

Чтобы избежать проблем с аутентификацией в этом случае, может потребоваться установить `requestedAuthnContext` в значение «false» в файле конфигурации веб-интерфейса Zabbix (*zabbix.conf.php*).

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

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