[comment]: # ({8d23af63-23bd62a5})
# 14 Настройка SAML с OneLogin

[comment]: # ({/8d23af63-23bd62a5})

[comment]: # ({b873fa12-2fcac093})
#### Обзор

В этом разделе приведены рекомендации по настройке единого входа и инициализации пользователей в Zabbix из [OneLogin](https://onelogin.com) с использованием аутентификации SAML 2.0.

[comment]: # ({/b873fa12-2fcac093})

[comment]: # ({b1fbe677-04a34e60})
#### Настройка OneLogin

[comment]: # ({/b1fbe677-04a34e60})

[comment]: # ({ac4e104b-f0ff96b7})
##### Создание приложения

1\. Войдите в свою учетную запись в OneLogin. Для целей тестирования вы можете создать бесплатную учетную запись разработчика в OneLogin.

2\. В веб-интерфейсе OneLogin перейдите в *Applications → Applications (Приложения → Приложения)*.

3\. Нажмите «Add App (Добавить приложение)» и найдите соответствующее приложение. Рекомендации на этой странице основаны на примере приложения *SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML)*.

4\. Для начала вы можете настроить отображаемое имя вашего приложения. Вы также можете добавить значок и сведения о приложении. После этого нажмите *Save (Сохранить)*.

[comment]: # ({/ac4e104b-f0ff96b7})

[comment]: # ({3bcbc5e8-58a8c759})
##### Настройка инициализации SSO/SCIM

1\. В *Configuration* -> *Application details (Конфигурация* -> *Сведения о приложении)* установите конечную точку единого входа Zabbix `http://<url-экземпляра-zabbix>/zabbix/index_sso.php?acs` в качестве значения следующих полей: 

-   *ACS (Consumer) URL Validator*
-   *ACS (Consumer) URL*

Обратите внимание на использование «http», а не «https», чтобы параметр `acs` не был вырезан в запросе.

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

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

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

Оставьте остальные параметры со значениями по умолчанию.

2\. В *Configuration* -> *API connection (Конфигурация* -> *Подключение API)* установите следующие значения:

-   *SCIM Base URL*: `https://<zabbix-instance-url>/zabbix/api_scim.php`
-   *SCIM JSON Template*: должен содержать все пользовательские атрибуты, которые вы хотите передать в Zabbix через SCIM, такие как `user_name`, `user_lastname`, `user_email` и `user_mobile`:

```
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "userName": "{$parameters.scimusername}",
  "name": {
    "familyName": "{$user.lastname}",
    "givenName": "{$user.firstname}"
  },
   "user_name": "{$user.firstname}",
   "user_lastname": "{$user.lastname}",
   "user_mobile": "{$user.phone}",
   "user_email": "{$user.email}"
}
```
Имена атрибутов произвольны. Можно использовать разные имена атрибутов, однако необходимо, чтобы они соовпадали со значением соответствующего поля в настройках SAML в Zabbix.

Обратите внимание, что для работы инициализации пользователей необходимо, чтобы OneLogin получал в ответ атрибут «name» с «givenName» и «familyName», даже если это не требовалось поставщиком услуг. Поэтому необходимо указать это в схеме в части настроек приложения.

-   *SCIM Bearer Token*: введите токен API Zabbix с правами Супер-администратора. 

Нажмите *Enable*, чтобы активировать соединение.

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

3\. На странице *Provisioning* включите опцию «Enable provisioning»:

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

4\. На странице *Parameters* содержится список параметров по умолчанию:

-   Убедитесь, что «scimusername» соответствует значению имени пользователя для входа в OneLogin (например, email); 
-   Отметьте опцию *Include in User Provisioning* для параметра «Groups»;
-   Нажмите «+», чтобы создать пользовательские параметры, необходимые для утверждений (assertions) SAML и инициализации пользователей, такие как `user_name`, `user_lastname`, `user_email` и `user_mobile`:

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

При добавлении параметра обязательно отметьте оба параметра *Include in SAML assertion* и *Include in User Provisioning*.

-   Добавьте параметр «group», который соответствует ролям пользователей в OneLogin. Роли пользователей будут переданы в виде строки с использованием точки с запятой `;` в качестве разделителя. Роли пользователей OneLogin будут использоваться для создания групп пользователей в Zabbix:

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

Проверьте список параметров:

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

5\. На странице *Rules (Правила)* создайте сопоставления ролей пользователей с параметром по умолчанию Groups (Группы).

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

Вы можете использовать регулярное выражение для передачи определённых ролей в качестве групп. Имена ролей не должны содержать `;`, так как OneLogin использует его в качестве разделителя при отправке атрибута с несколькими ролями.

[comment]: # ({/3bcbc5e8-58a8c759})

[comment]: # ({ba0bd783-9be86dbb})
#### Настройка Zabbix

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

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

|Поле Zabbix|Поле настрек в OneLogin|Пример значения|
|----|----|--|
|*IdP entity ID*|Issuer URL<br>(см. вкладку SSO вашего приложения в OneLogin)| |
|*URL единого входа*<br>*(SSO service URL)*|SAML 2.0 Endpoint (HTTP)<br>(см. вкладку SSO вашего приложения в OneLogin)| |
|*URL единого выхода*<br>*(SLO service URL)*|SLO Endpoint (HTTP)<br>(см. вкладку SSO вашего приложения в OneLogin)| |
|*Атрибут имени пользователя*<br>*(Username attribute)*|Custom parameter|`user_email`|
|*Атрибут имени группы*<br>*(Group name attribute)*|Custom parameter|`group`|
|*Атрибут имени пользователя*<br>*(User name attribute)*|Custom parameter|`user_name`|
|*Атрибут фамилии пользователя*<br>*(User last name attribute)*|Custom parameter|`user_lastname`|

Также необходимо настроить соответствие группе пользователей. Cоответствие способов оповещений является необязательным. Нажмите *Update (Обновить)*, чтобы сохранить эти настройки.

2\. Загрузите сертификат, предоставленный OneLogin, и поместите его в `conf/certs` вашей инсталляции веб-интерфейса Zabbix как idp.crt.

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

    chmod 644 idp.crt

Вы можете получить доступ к загрузке сертификата в OneLogin в *Applications (Приложения)* -> *SSO* -> нажмите *View details (Просмотреть подробности)* под текущим сертификатом.

Можно использовать другое имя и местоположение сертификата. В этом случае убедитесь, что в `conf/zabbix.conf.php` добавлена следующая строка:

```
$SSO['IDP_CERT'] = 'путь/к/certname.crt';
```

[comment]: # ({/ba0bd783-9be86dbb})

[comment]: # ({91a2d08a-09c52023})
#### Инициализация пользователей SCIM

При включённой инициализации пользователей теперь можно добавлять/обновлять пользователей и их роли в OneLogin и немедленно получать их в Zabbix.

Например, вы можете создать нового пользователя:

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

Добавьте его в роль пользователя и приложение, которое будет инициализировать пользователя:

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

При сохранении пользователя он будет инициализирован в Zabbix. В Application -> Users вы можете проверить статус инициализации текущих пользователей приложения:

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

Если инициализация прошла успешно, пользователь будет виден в списке пользователей Zabbix.

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

[comment]: # ({/91a2d08a-09c52023})
