Авторизация внешних пользователей и систем через LDAP¶
TDG поддерживает технологию единого входа (Single Sign-On) – механизм аутентификации, позволяющий пользователям получать доступ к нескольким приложениям и сервисам c одним набором учетных данных. Это означает, что авторизоваться в TDG можно как через пользователей и токены приложений, так и с использованием такого внешнего инструмента, как LDAP.
LDAP (Lightweight Directory Service Protocol) – открытый протокол для хранения и получения данных из службы каталогов. LDAP позволяет централизованно настраивать права доступа к данным.
В TDG доступны три способа настройка протокола LDAP:
- в веб-интерфейсе TDG; 
- через конфигурационный файл - config.yml;
- через GraphQL API, в секции - account_provider.
В этом руководстве рассмотрим первые два способа настройки протокола.
Для выполнения примера требуются:
- настроенный сервер LDAP. 
Note
Для локального тестирования LDAP-авторизации можно использовать сервер GLAuth. Гарантируется работа с версией GLAuth 2.0.0
Руководство включает в себя следующие шаги:
Особенности конфигурации LDAP¶
По умолчанию, логин в систему – это строка вида user@domain, где:
- user– пользователь LDAP, который состоит в определенном домене и организационном подразделении;
- domain– домен LDAP.
Пример: tdguser@my.domain.ru.
Если подключена Active Directory, служба каталогов Microsoft,
для входа в систему используется адрес электронной почты пользователя LDAP.
В качестве фильтра при этом используется атрибут Active Directory userprincipalname=email,
где email – адрес электронной почты пользователя.
Каждый пользователь LDAP состоит в одной или нескольких группах LDAP (domain group).
Группе LDAP задается определенная роль (например, admin), которая определяет
права доступа для пользователя из этой группы.
Если пользователь LDAP состоит сразу в нескольких группах, он получает разрешения на действия из всех ролей, заданных
для этих групп.
Настройка LDAP в веб-интерфейсе¶
Добавим новую конфигурацию LDAP через веб-интерфейс TDG.
- На вкладке Settings > LDAP нажмите кнопку Add Configuration.   
- В диалоговом окне LDAP укажите параметры, необходимые для вашей конфигурации: - Domain– доменное имя, используемое в доменном логине пользователя (- tdguser@my.domain.ru). Пример:- my.domain.ru;
- Hosts– адрес подключения к серверу LDAP. Пример:- server.my.domain.ru:389;
- Organizational units(опционально) – названия организационных подразделений или групп пользователей. Параметр будет пропущен, если для него не задано явное значение. Пример:- tarantool;
- Options(опционально) – настройки LDAP. Параметр будет пропущен, если для него не задано явное значение;
- Roles– описание ролей, которые будут назначаться пользователю в зависимости от групп LDAP, в которых он состоит. Для каждой роли описаны название роли и соответствующие ей LDAP-группы. Описание LDAP-группы состоит из общего имени (CN), названия организационного подразделения или LDAP-группы (OU) и компонентов домена (DC).- Пример: добавьте роль - admin. Для нее в поле- Domain Groupsукажите значение- CN=tarantool, OU=groups, OU=other_groups, DC=my, DC=domain, DC=ru;
- Search timeout(опционально) – время ожидания ответа от сервера LDAP в секундах. Значение по умолчанию:- 2;
- Use TLS(опционально) – использование TLS. Значение по умолчанию:- false;
- Use Active Directory(опционально) – использование Active Directory. Значение по умолчанию:- false.
 - При настройке обратите внимание на параметры - domainи- organizational_units. Эти параметры используются при аутентификации для поиска пользователя в соответствующем домене и организационном подразделении.- Полное описание параметров LDAP приведено в разделе ldap справочника конфигурации. 
- Нажмите кнопку Submit, чтобы добавить конфигурацию LDAP. 
- Чтобы войти в систему как пользователь LDAP, нажмите кнопку Log in в правом верхнем углу. В диалоговом окне Authorization введите логин (вида - user@domain) и пароль пользователя LDAP, затем нажмите кнопку Login.
Настройка LDAP в файле конфигурации¶
Указать конфигурацию LDAP можно:
- в общем конфигурационном файле (секция - ldapв файле- config.yml);
- в отдельном файле - ldap.yml.
Полное описание параметров LDAP приведено в разделе ldap справочника конфигурации.
Пример конфигурации с включенными TLS и Active Directory:
ldap:
  - domain: 'my.domain.ru'
    organizational_units: ['tarantool']
    hosts:
      - server.my.domain.ru:389
    use_active_directory: true
    use_tls: true
    search_timeout: 2
    options:
      - LDAP_OPT_X_TLS_CACERTFILE: /certs/CA_Root.crt
    roles:
      - domain_groups:
          - 'cn=tarantool,ou=groups,ou=other_groups,dc=my,dc=domain,dc=ru'
        role: 'admin'
Созданный yml-файл с настройками конфигурации нужно упаковать в zip-архив и загрузить
в TDG согласно инструкции.