---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - ru/concepts/auth-providers/ldap-config
  - href: ru/concepts/auth-providers/ldap-config.md
    type: text/markdown
    title: Markdown version
csp:
  - script-src:
      - https://mc.yandex.ru
    img-src:
      - https://mc.yandex.ru
    connect-src:
      - https://mc.yandex.ru
      - wss://mc.yandex.ru
    child-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-ancestors:
      - 'blob:'
      - https://mc.yandex.ru
canonical: ru/concepts/auth-providers/ldap-config.html
title: Как настроить LDAP-провайдер аутентификации в DataLens On-premises
description: >-
  Следуя данной инструкции, вы сможете настроить LDAP-провайдер аутентификации в
  DataLens On-premises.
vcsPath: ru/concepts/auth-providers/ldap-config.md
---

# Конфигурация LDAP-провайдера в DataLens On-premises

Чтобы настроить LDAP-провайдер, нужно создать конфигурацию с необходимыми параметрами для подключения к LDAP-серверу и маппинга пользовательских атрибутов.


## Основные параметры конфигурации {#base-config-parameters}

```javascript
{
    slug: 'openldap',                  // Уникальный идентификатор провайдера
    title: 'OpenLDAP',                 // Отображаемое название провайдера
    type: 'ldap',                      // Тип провайдера (должен быть 'ldap')
    defaultRole: 'datalens.visitor',   // Роль по умолчанию для новых пользователей
    config: {
        // Параметры подключения к LDAP-серверу
        url: 'ldap://localhost:8389',  // URL LDAP-сервера
        bindDN: 'cn=admin,dc=example,dc=org',  // DN для административного подключения
        bindCredentials: 'admin',      // Пароль для административного подключения
        bindProperty: 'dn',            // Атрибут для административного подключения

        // Параметры поиска пользователей
        searchBase: 'ou=users,dc=example,dc=org',  // База поиска пользователей
        searchFilter: '(uid={{username}})',        // Фильтр поиска пользователей
        searchScope: 'sub',                        // Область поиска: 'base', 'one' или 'sub'

        // Параметры поиска групп (опционально)
        groupSearchBase: 'ou=groups,dc=example,dc=org',  // База поиска групп
        groupSearchFilter: '(&(objectClass=groupOfNames)(member={{dn}}))',  // Фильтр поиска групп
        groupDnProperty: 'dn',                           // Атрибут DN группы
        groupSearchScope: 'sub',                         // Область поиска групп

        // Маппинг атрибутов пользователя (опционально)
        userAttributes: {
            userId: 'uid',       // Атрибут для идентификатора пользователя (по умолчанию 'uid')
            login: 'uid',        // Атрибут для логина пользователя (по умолчанию 'uid')
            email: 'mail',       // Атрибут для адреса электронной почты пользователя (по умолчанию 'mail')
            firstName: 'givenName', // Атрибут для имени пользователя (по умолчанию 'givenName')
            lastName: 'sn',      // Атрибут для фамилии пользователя (по умолчанию 'sn')
        },

        // Маппинг атрибутов группы (опционально)
        groupAttributes: {
            groupId: 'dn',       // Атрибут для идентификатора группы (по умолчанию 'dn')
            title: 'cn',         // Атрибут для названия группы (по умолчанию 'cn')
        },

        // Маппинг ролей DataLens на группы LDAP (опционально)
        roleToGroupId: {
            'datalens.admin': 'cn=datalensadmin,ou=groups,dc=example,dc=org',
            'datalens.creator': 'cn=datalenscreator,ou=groups,dc=example,dc=org',
            'datalens.visitor': 'cn=datalensvisitor,ou=groups,dc=example,dc=org',
        },

        // Дополнительные настройки
        syncUserRoles: true,     // Синхронизировать роли пользователя при каждом входе (по умолчанию true)
        syncUserGroups: true,    // Синхронизировать группы пользователя при каждом входе (по умолчанию true)
    }
}
```


## Описание параметров {#ldap-parameters}

### Основные параметры {#base-parameters}

* **slug** — уникальный идентификатор провайдера, используется в URL и внутренних идентификаторах.
* **title** — название провайдера, отображаемое в интерфейсе.
* **type** — тип провайдера, для LDAP должно быть значение `ldap`.
* **defaultRole** — роль, назначаемая пользователю, если не удалось определить роль по группам LDAP.


### Параметры подключения к LDAP-серверу {#ldap-connection-parameters}

* **url** — URL LDAP-сервера, например, `ldap://localhost:389` или `ldaps://ldap.example.com:636`.
* **bindDN** — уникальное имя Distinguished Name (DN) для административного подключения к LDAP-серверу.
* **bindCredentials** — пароль для административного подключения.
* **bindProperty** — атрибут объекта пользователя LDAP, используемый при привязке для проверки пароля. Например, `name`, `email`. По умолчанию: `dn`.


### Параметры поиска пользователей {#user-search-parameters}

* **searchBase** — база поиска пользователей в LDAP, например, `ou=users,dc=example,dc=org`.
* **searchFilter** — фильтр поиска пользователей. Используйте шаблон `{{username}}` для подстановки введенного пользователем логина.
* **searchScope** — область поиска:

  * `base` — поиск только в указанной базе.
  * `one` — поиск в базе и на один уровень ниже.
  * `sub` — рекурсивный поиск во всех поддеревьях.


### Параметры поиска групп (опционально) {#group-search-parameters}

* **groupSearchBase** — база поиска групп в LDAP, например, `ou=groups,dc=example,dc=org`.
* **groupSearchFilter** — фильтр поиска групп. Используйте `{{dn}}` для подстановки DN найденного пользователя.
* **groupDnProperty** — атрибут объекта пользователя, используемый в интерполяции `{{dn}}` для **groupSearchFilter** (по умолчанию `dn`).
* **groupSearchScope** — область поиска групп (аналогично **searchScope**).


### Маппинг атрибутов пользователя {#user-attributes-mapping}

Позволяет настроить соответствие между атрибутами пользователя LDAP и полями пользователя в системе:

* **userId** — атрибут для идентификатора пользователя (по умолчанию `uid`).
* **login** — атрибут для логина пользователя (по умолчанию `uid`).
* **email** — атрибут для адреса электронной почты пользователя (по умолчанию `mail`).
* **firstName** — атрибут для имени пользователя (по умолчанию `givenName`).
* **lastName** — атрибут для фамилии пользователя (по умолчанию `sn`).


### Маппинг атрибутов группы {#group-attributes-mapping}

Позволяет настроить соответствие между атрибутами групп LDAP и полями групп в системе:

* **groupId** — атрибут для идентификатора группы (по умолчанию `dn`).
* **title** — атрибут для названия группы (по умолчанию `cn`).


### Маппинг ролей на группы LDAP {#roles-mapping}

Позволяет настроить соответствие между ролями в DataLens и группами LDAP.

Алгоритм синхронизации групп и ролей:

1. Выполняется поиск групп пользователя в LDAP.
1. Для каждой группы выполняется поиск в `roleToGroupId` по идентификатору группы (аттрибуту из `groupAttributes`). При нахождении группы в `roleToGroupId`, пользователю будет назначена соответствующая роль.

Например:

```javascript
roleToGroupId: {
    'datalens.admin': 'cn=datalensadmin,ou=groups,dc=example,dc=org',
    'datalens.creator': 'cn=datalenscreator,ou=groups,dc=example,dc=org',
    'datalens.visitor': 'cn=datalensvisitor,ou=groups,dc=example,dc=org',
}
```

Где:

* `'cn=datalensadmin,ou=groups,dc=example,dc=org'`, `'cn=datalenscreator,ou=groups,dc=example,dc=org'`, `'cn=datalensvisitor,ou=groups,dc=example,dc=org'` — идентификаторы групп и база для поиска (`ou=groups,dc=example,dc=org`) в LDAP.
* `'datalens.admin'`, `'datalens.creator'`, `'datalens.visitor'` — роли в DataLens.

Так, если пользователь состоит в группе `cn=datalensadmin`, ему будет назначена соответствующая роль — `datalens.admin`.


### Дополнительные настройки {#additional-settings}

* **syncUserRoles** — при значении `true` (по умолчанию), роли пользователя будут синхронизироваться при каждом входе.
* **syncUserGroups** — при значении `true` (по умолчанию), группы пользователя будут синхронизироваться при каждом входе.


### Особенности синхронизации ролей и групп {#roles-groups-synchronization}

Синхронизация групп и ролей пользователя происходит в момент входа пользователя в систему. Если пользователь состоит в группе, указанной в конфигурации, ему будет назначена соответствующая роль, а также группа будет заведена в DataLens и будет доступна в правах доступа. Если пользователь не состоит в группе, ему будет назначена роль по умолчанию. Если групп больше, чем 100, то синхронизация будет пропущена. Если нужно синхронизировать больше групп, то необходимо настроить периодическую синхронизацию групп с помощью скрипта синхронизации.