⟵ сюдатуда ⟶
  • Установка
  • Установка на Ubuntu
  • Обновления
  • Установка PRO
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Системные таблицы
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • [PRO] Деревья
  • [PRO] Анонимные таблицы
  • [PRO] Внешние формы
  • [PRO] Экспорт и импорт таблиц
  • [PRO] MeiliSearch
  • [PRO] Базы данных
  • [PRO] Настройка CSS
  • [PRO] Custom docs
  • [PRO] LDAP AD
  • Параметры назначения ролей в Totum
  • Последовательность авторизации
  • Stunnel как прокси от клиента к серверу LDAP
  • [PRO] Версии файлов
  • [PRO] List-unsubscribe
  • [PRO] Динамические поля
  • [PRO] Only Office
  • [PRO] Auth Tokens
  • [PRO] 2FA
  • [PRO] Superlang
  • [PRO] Profiler
  • [PRO] Подключение функций
  • [SRV] Подключение
  • [SRV] Пользовательские возможности
  • [SRV] XLSX/DOCX генераторы
  • [SRV] chatGPT
  • PRO LDAP AD

    На сервере должен быть установлен модуль PHP для LDAP. Он добавлен в автоустановку, но если у вы увидите ошибку его отсутсвия — установите на сервер командой:

    apt install php8.0-ldap
    

    youtube

    ВИДЕО НА YouTube ⟹


    Для подключения Totum к вашему серверу LDAP заполняем таблицу ttm__ldap_settings:

    • h_host — хост ldap-сервера

    • h_port — порт ldap-сервера. Обычно 389.

      Если в вашей конфигурации внутренней сети несколько доменов и они находятся на разных хостах, то эти параметры передаются в массиве в h_domains_settings (см.дальше) к конкретному домену. Если параметр передан в h_domains_settings, то он будет использован оттуда. Если нет — из общих настроек:

      • h_host -› host
      • h_port -› port
      • h_version -› version
      • h_ssl -› ssl
      • h_cert_file -› cert_file
      • h_bind_format -› bind_format [at|dn]
      • h_login_param -› login_param
      • h_fio_param -› fio_param
      • h_email_type -› email_type [bind|param]
      • h_email_param -› email_param
      • h_get_groups -› get_groups
      • h_group_param -› group_param
    • h_version — если поле не заполнено то используется {"LDAP_OPT_PROTOCOL_VERSION":"3"}, но вы можете задать кастомные настройки параметров PHP для подключения в формате ключ-значение.

    • h_ssl — поставьте галочку, если нужно проверять SSL-сертификат сервера LDAP.

    • h_cert_file — загрузите два файла .key и .crt сертификата, если сервер LDAP использует сертификат выпущенный не общедоступным центром сертификации.

    • h_ldap_on — включите, после того, как настроите все параметры.

      Важно! Не включайте до того как проверите работоспособность подключения.

    • h_domains_settings — настройки доменов (одного или нескольких)

      • Можно заполнить примером по умолчанию по правой кнопке.

      • В верхнем ключе указывается домен (полностью с точками):

      • DC=totum,DC=local — надо указать как totum.local

      • user — логин пользователя, имеющего доступ к поиску в этом домене.

      • pass — пароль пользователя доступа.

        Если сервер поддерживает анонимные запросы — то user и pass могут отсутствовать. Именно отсутствовать, а не быть с пустыми значениями!

      • basedn — базовый DN в котором будет осуществлена фильтрация. Если не знаете, что это такое, то установите DN указанного домена.

        Для AD нельзя просто так указать DN равный домену. Должен быть задан либо более конкретный OU в котором будет осуществлен поиск, либо передан параметр "LDAP_OPT_REFERRALS": "0", в поле h_versions. Подробнее здесь.

      • filter — фильтр поиска, на основе которого будут выбраны пользователи с сервера LDAP:

      • // пример для сервера AD
        (&(objectCategory=Person)(memberOf=CN=totum,OU=AccessGroup,DC=totum,DC=local)(!(useraccountcontrol:1.2.840.113556.1.4.803:=2)))
        
      • // пример для unix
        (uid=*)
        
      • Документация по фильтрам поиска в AD: https://social.technet.microsoft.com/...

      • filter_single — фильтр поиска, по которому будет осуществлятся поиск отдельного пользователя по его логину:

      • // для AD
        (&(objectCategory=Person)({USER_LOGIN_PARAM}={USER_LOGIN}))
        
      • // для unix
        ({USER_LOGIN_PARAM}={USER_LOGIN})
        
      • Используется две замены значения:

        • {USER_LOGIN_PARAM} — будет взят из h_login_param.

        • {USER_LOGIN} — будет взят логин пользователя.

    • h_bind_format — формат бинда пользователя на сервере LDAP:

      • @ type — для серверов AD

      • dn type — для Linux-серверов (в этом случае в h_domains_settingsdomainuser] должен быть указан dn пользователя доступа)

      Для DN-типа авторизации недоступны режимы создания пользователей «Загружать при первом бинде» в h_user_processing_type. Только предварительная загрузка!

    • h_domain_selector — вид переключателя доменов на странице авторизации (подробнее про последовательность авторизации смотрите дальше):

      • Скрыт

      • Totum/LDAP

      • Totum/Список доменов

    • h_login_param — какой параметр является логином на вашем сервере паролей.

      • Стандартное значение для AD — sAMAccountName можно заполнить по правой кнопке.

      • Для Linux-систем скорее всего будет dn.

    • h_fio_param — что записывать в FIO в таблице пользователей Totum. Можно изменить непосредственнов Totum. Он будет обновлен из Ldap только в том случае, если этот параметр изменится в Ldap.

    • Тип email для записи в таблицу пользователей Totum:

      • From bind: login@domain.zone — email будет сформирован из логина и домена.

      • From param — email будет взят из параметра с сервера LDAP указанного в h_email_param.

      • В обоих случаях можно изменить email непосредственно в Totum. Он будет обновлен из Ldap только в том случае, если он изменится в Ldap.

    • h_show_result — проверяет подключение с введенными значениями. По правой кнопке можно получить данные от Ldap-сервера с учетом параметров поиска Групп.

    • h_user_processing_type — определяет в какой момент будут создаваться пользователя в totum:

      • Загружать при первом бинде — пользователи не будут создаваться в тотум предварительно, только в момент успешного бинда.

      • Загружать при первом бинде при соответствии ролей — пользователь будет авторизован и создан в totum только при успешном бинде и наличии соответствий ролей.

      • Все найденные пользователи — пользователи будут загружены и созданы в Totum при нажатии на h_import_users независимо от соответствия ролей. При отсутствии соответствия роли у такого пользователя будут пустыми.

      • Только с совпадающими ролями — пользователи будут загружены и созданы в Totum при нажатии на h_import_users только, если у них есть соответствующие роли.

    • h_get_groups — настройки получения групп. Для каждого пользователя будут выполнены дополнительные запросы c подстановкой {USER_DN} и результат помещен в указанный ключ (для AD можно заполнить по правой кнопке):

      • Пустое — не загружать группы.

      • получить прямое вхождение в группы:

      groups: (&(objectCategory=group)(member={USER_DN}))
      
      • получить косвенное вхождение в группы (для случаев, когда группы вложены в группы):
      all_groups: (&(objectCategory=group)(member:1.2.840.113556.1.4.1941:={USER_DN}))
      
    • h_group_param — параметр, который будет запрошен при выполнении h_get_groups и по которому потом будет происходить матчинг групп. Для AD обычно используется CN.

    • h_import_users — импортирует пользователей (добавляет и обновляет) из Ldap в Totum в соответсвии с настройками.

      Особенности создания пользователя в Totum

      Логин Тотум для ldap-пользователей — пустой.

      В поле ttm__auth_type устанавливается значение ldap.

      Логин в ldap в формате loginParam@domain.zone — записываем в отдельное после ttm__extparams (тип данные) + туда же записываем DN и загружаемые параметры + назначенные по правилам соответствия роли.

    • h_update_one_user — добавляет и обновляет одного пользователя.

    • h_generate_cron — создает задание крона в таблице Кроны, нажимающее по расписанию на кнопку h_import_users.

    Параметры назначения ролей в Totum

    В comparison_parameters набираются параметры, а в roles_in_totum — соответствующие им роли в Totum.

    Правила:

    • Результаты по каждой строке будут сложены. Если параметры пользователя подходят под несколько строк, то он получит сумму ролей.

    • В comparison_parameters:

      • В ключе указывается параметр по которому идет сравнение.

      • Если параметр является строкой, то сравнения будет идти по полному значению.

      • Если параметр является списком, то сравнение будет идти по отдельным элементам, разделенным в ответе Ldap запятыми.

      • Для параметров групп сравнение всегда идет по отдельному элементу, даже если указать его как строковое значение для всего параметра.

      • Обработка всех условий идет по принципу И (должны присутствовать все указанные параметры).

      • Ключи нерегистрочувствительны.

      • Значения регистрочуствительны!

    Примеры:

    Пользователь dn + роль Создатель:

    dn=cn=polunin,ou=Totum,dc=totum,dc=online
    
    {
      "dn": "cn=polunin,ou=Totum,dc=totum,dc=online"
    }
    

    Входит в домен totum.online и прямое вхождение в группу Totum:

    {
    "dn": [
        "dc=totum",
        "dc=online"
      ],
      "groups": "Totum"
    }
    

    Прямое вхождение в группу totum и managers:

    {
      "groups": [
        "Totum",
        "Boss" ]
    }
    

    Прямое вхождение в группу managers и косвенное в totum :

    {
      "groups_all": "totum",
      "groups": "managers"
    }
    

    Последовательность авторизации

    1. Если включен Ldap и если есть @ во введенном значении то проверяем по email.

    2. Если этот email относится к пользователю Ldap, то дальше авторизация отправляется биндится на ldap-сервер.

    3. Если email не найден то ищем в ttm__extparams по логин + домен.

    4. Если селектор в состоянии показа, и домен после собаки совпадает с одним из доменов — то селектор переключится и запомнится для следующей авторизации в браузере.

    5. Если указан только логин, то мы смотрим выбранный в селекторе домен и ищем еще раз в login или в ttm__extparams.

    6. Если селектор в статусе Скрыт и указан только логин то сначала ищем в логинах, и если не нашли и у нас один домен в списке, то подставляем этот домен и ищем в ttm__extparams.

      1. Login (те пользователи Totum) в этом случае имеют приоритет.

      2. Если несколько доменов в списке, то говорим, что не нашли и дальше не идем.

    7. Если мы не нашли пользователя в Totum, то мы из под пользователя доступа поищем его в Ldap.

      1. Если не нашли и в Ldap то «Пользователь не найден».

      2. Если нашли, мы его создаем и пытаемся его забиндить.

        1. Если ролей соответсвия нет и настройка стоит «Только с соответсвующими ролями» — «Пользователь не имеет доступа к Тотум»

        2. Если не проходит бинд то — «Авторизация неуспешна»

    Stunnel как прокси от клиента к серверу LDAP

    Эта инструкция взята из документации Google.

    Использование Stunnel в качестве прокси-сервера.

    Если в клиенте не предусмотрен способ аутентификации в LDAP с помощью сертификата клиента (или еще по каким нестандартным причинам не проходит защищенное подключение к вашему серверу LDAP), используйте сервис Stunnel в качестве прокси-сервера.

    Для этого необходимо настроить в Stunnel предоставление сертификата клиента серверу LDAP, а в клиенте — подключение к Stunnel. Желательно запускать Stunnel на том же сервере, что и ваше приложение, и выполнять прослушивание локально (чтобы каталог LDAP не был доступен за пределами этого сервера).

    Установите Stunnel:

    apt-get install stunnel4
    

    Создайте файл конфигурации /etc/stunnel/google-ldap.conf со следующим содержимым (в приведенном ниже примере ldap-client.crt – это файл сертификата, а ldap-client.key – файл ключа, это приммер подключения к Google AD):

    [ldap]
    client = yes
    accept = 127.0.0.1:1636
    connect = ldap.google.com:636
    cert = ldap-client.crt
    key = ldap-client.key
    

    Чтобы включить Stunnel, откройте файл /etc/default/stunnel4 и задайте параметр ENABLED=1.

    Перезапустите Stunnel:

    service stunnel restart
    

    Настройте приложение так, чтобы оно указывало на ldap://127.0.0.1:1636.

    Если вы также изменили строку accept в файле конфигурации, то можете заменить 1636 номером любого другого неиспользуемого порта. Поскольку обмен данными между клиентом и сервисом Stunnel происходит локально, учетные данные для LDAP хранятся как обычный текст (параметр StartTLS/SSL/TLS отключен).