⟵ сюдатуда ⟶
  • Установка
  • Установка на NetAngels.ru
  • Установка на Ubuntu
  • Установка с Docker
  • Обновления
  • Установка PRO
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Системные таблицы
  • Подключение функций
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • [PRO] MeiliSearch
  • [PRO] Базы данных
  • [PRO] Настройка CSS
  • [PRO] Custom docs
  • [PRO] LDAP AD
  • Параметры назначения ролей в Totum
  • Последовательность авторизации
  • Stunnel как прокси от клиента к серверу LDAP
  • [PRO] Версии файлов
  • [SRV] Подключение
  • [SRV] Пользовательские возможности
  • [SRV] XLSX/DOCX генераторы
  • 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_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 указанного домена.

      • 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 отключен).