Skip to content

Аутентификация через LDAP

Важно

Аутентификация через LDAP доступна только в серверной версии ТестОпс.

LDAP — сетевой протокол для доступа к централизованным службам каталогов (например, Active Directory, OpenLDAP). Если вы настроите интеграцию с LDAP-сервером для вашего инстанса ТестОпс, пользователи смогут использовать учетные записи LDAP для входа в ТестОпс.

Примечание

Чтобы настроить аутентификацию через LDAP, вам необходимы:

  • доступ к конфигурационным файлам ТестОпс;
  • сведения об LDAP-сервере: URL-адрес (включая протокол и порт), служебная учетная запись и схема каталога (базы поиска, фильтры, имена атрибутов);
  • понимание особенностей вашего LDAP-сервера: протокол и параметры различаются между серверами, поэтому универсального набора значений не существует;
  • опционально — утилита ldapsearch для проверки запросов.

Принцип работы аутентификации через LDAP

  1. ТестОпс устанавливает соединение с LDAP-сервером, используя служебную учетную запись.

  2. На странице входа в ТестОпс пользователь вводит свои учетные данные.

    В зависимости от конфигурации ТестОпс может автоматически преобразовать имя пользователя в нижний регистр.

  3. ТестОпс отправляет запрос к LDAP-серверу, чтобы определить, существует ли указанная учетная запись.

    Вы можете настроить конфигурацию этого запроса, чтобы он использовал один из двух вариантов:

    • фильтр поиска — ТестОпс, используя служебную учетную запись, ищет пользователя по заданному фильтру, получает DNУникальный полный адрес объекта в LDAP-каталоге пользователя и выполняет аутентификацию (bind) на LDAP-сервере;
    • шаблоны DN — ТестОпс формирует DN пользователя по шаблону и пытается выполнить аутентификацию (bind) на LDAP-сервере.
  4. При успешной аутентификации (bind) ТестОпс запрашивает у LDAP-сервера информацию о пользователе, включая уникальный идентификатор (UID) и группы, к которым пользователь принадлежит. После этого ТестОпс ищет внутреннюю учетную запись, соответствующую указанному UID. Если такой записи не существует, ТестОпс создает новую запись.

    В зависимости от конфигурации ТестОпс может обновить информацию о пользователе данными с LDAP-сервера (имя, электронная почта, роли и аватар).

  5. После успешной аутентификации в ТестОпс пользователь перенаправляется на целевую страницу или страницу Проекты.

Настройка аутентификации через LDAP

Чтобы настроить аутентификацию в ТестОпс через LDAP:

  1. Определите базу и фильтр поиска пользователей на LDAP-сервере.
  2. Измените конфигурационные файлы ТестОпс.
  3. Протестируйте аутентификацию через LDAP с помощью ldapsearch.
  4. Настройте маппинг ролей между LDAP-сервером и ТестОпс (при необходимости).

Важно

Настраивайте маппинг ролей только после того, как убедитесь, что пользователь может войти в инстанс ТестОпс через LDAP.

1. Определите базу и фильтр поиска пользователей на LDAP-сервере

Для входа через LDAP ТестОпс должен найти учетную запись пользователя в каталоге. Для этого необходимы:

  • база поиска пользователей — ветка каталога, в которой находятся пользователи. База поиска обычно соответствует доменному имени сервера, к которому добавляется OUКонтейнер в структуре LDAP-каталога, который служит для логической группировки объектов (пользователей, компьютеров, групп) для сужения области поиска.
  • фильтр поиска пользователей — условие отбора записи. ТестОпс использует для работы идентификатор пользователя, которому предоставляется доступ (как правило, атрибут uid).

Эти значения можно узнать у администратора вашего LDAP-сервера или с помощью утилиты ldapsearch. В зависимости от операционной системы ldapsearch может входить в состав пакетов ldap-utils или ldap-clients.

Чтобы узнать базу и фильтр поиска пользователей с помощью утилиты ldapsearch:

  1. Выполните запрос:

    sh
    ldapsearch -x -H <URL> -b <Base DN> -D <Bind DN> -w <Password> <Filter>

    где:

    • URL — URL-адрес LDAP-сервера (например, ldap://ldap.example.org:389);
    • Base DN — предполагаемая база поиска, полученная из доменного имени сервера (например, для example.org это dc=example,dc=org);
    • Bind DNDNУникальный полный адрес объекта в LDAP-каталоге пользователя, от имени которого выполняется запрос (например, cn=admin,dc=example,dc=org);
    • Password — пароль пользователя, от имени которого выполняется запрос;
    • Filter — фильтр поиска. Например, чтобы найти пользователя с фамилией Иванов, можно использовать фильтр (cn=*Иванов*).

    Пример запроса:

    sh
    ldapsearch -x -H "ldap://ldap.example.org:389" -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w "password" "(cn=*Иванов*)"

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

    yaml
    dn: cn=Иван Иванов,ou=People,dc=example,dc=org
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: person
    cn: Иван Иванов
    givenName: Иван
    sn: Иванов
    mail: ivan.ivanov@email.com
    uid: ivan
  2. Определите базу поиска пользователей из результата запроса. Обычно это часть строки dn, соответствующая ветке с пользователями (например, ou=People,dc=example,dc=org).

  3. Сформируйте фильтр поиска пользователей из результата запроса. Вам потребуются:

    • атрибут со значением, который есть у всех учетных записей пользователей (например, objectClass со значением person);
    • атрибут, в котором хранится идентификатор пользователя (например, uid).

    Пример фильтра: (&(objectClass=person)(uid={0})).

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

2. Измените конфигурационные файлы ТестОпс

Измените конфигурационные файлы ТестОпс в зависимости от вашего типа развертывания:

Измените параметры в файле values.yaml:

  • общие параметры:

    • auth.primary — введите ldap, чтобы установить LDAP в качестве основного метода аутентификации;

    • auth.defaultRole — введите глобальную роль ТестОпс по умолчанию, которая будет назначена новым пользователям из LDAP-сервера. Рекомендуется указать ROLE_GUEST — глобальную роль «Гость», чтобы контролировать использование лицензионных мест.

      Примечание

      Если значение параметра auth.defaultRole не указано, по умолчанию используется ROLE_GUEST.

  • подключение к LDAP-серверу:

    • auth.ldap.enabled — введите true, чтобы включить аутентификацию через LDAP;
    • auth.ldap.url — введите URL-адрес LDAP-сервера;
    • auth.ldap.auth.user — введите DN служебной учетной записи;
    • auth.ldap.auth.pass — введите пароль служебной учетной записи.
  • названия атрибутов LDAP:

    • auth.ldap.uidAttribute — введите название атрибута, в котором хранится UID пользователя;
    • auth.ldap.passwordAttribute — введите название атрибута, в котором хранится пароль пользователя;
    • auth.ldap.usernamesToLowercase — введите true, чтобы перед поиском преобразовывать имя пользователя в нижний регистр, или false, чтобы оставить его без изменений.
  • параметры поиска пользователей:

    • auth.ldap.user.searchBase — введите базу поиска пользователей, которую вы сохранили на шаге 1;

    • auth.ldap.user.searchFilter — введите фильтр поиска пользователей, который вы сохранили на шаге 1;

    • auth.ldap.user.dnPatterns — введите шаблоны DN, разделенные запятыми.

      Важно

      Искать пользователей в каталоге можно с помощью одного из двух параметров: auth.ldap.user.searchFilter или auth.ldap.user.dnPatterns.

      Эти параметры взаимоисключают друг друга, поэтому не указывайте их одновременно.

3. Тестирование аутентификации через LDAP с помощью ldapsearch

Перед перезапуском ТестОпс проверьте новые параметры вручную с помощью утилиты ldapsearch.

С помощью утилиты найдите пользователя на LDAP-сервере по его UID:

sh
ldapsearch \
    -H 'ldap://ldap.example.com:389' \
    -D 'cn=admin,dc=example,dc=com' \
    -w 'SecretPa$$w0rd' \
    -b 'dc=example,dc=com' \
    '(&(objectClass=person)(uid=ivan))'

Аргументы соответствуют следующим параметрам конфигурации:

  • -Hauth.ldap.url;
  • -Dauth.ldap.auth.user;
  • -wauth.ldap.auth.pass;
  • -bauth.ldap.user.searchBase;
  • запрос — auth.ldap.user.searchFilter или auth.ldap.user.dnPatterns с именем пользователя вместо {0}.

4. Настройте маппинг ролей между LDAP-сервером и ТестОпс

При необходимости вы можете настроить маппинг ролей между LDAP-сервером и ТестОпс, который укажет, какие глобальные роли ТестОпс должны получить группы пользователей из LDAP-сервера.

Маппинг ролей позволяет контролировать использование мест в основной лицензии ТестОпс, предотвращать несанкционированный доступ к проектам ТестОпс и централизованно управлять правами пользователей из LDAP-сервера.

Для маппинга ролей ТестОпс должен находить записи групп в каталоге и сопоставлять их с пользователем. Для этого необходимы:

  • база поиска групп — ветка каталога, в которой находятся группы. База поиска обычно соответствует доменному имени сервера, к которому добавляется OU для сужения области поиска до ветки с группами.
  • фильтр поиска групп — правило, по которому ТестОпс определяет, входит ли пользователь в группу.

Эти значения можно узнать у администратора вашего LDAP-сервера или с помощью утилиты ldapsearch.

Чтобы узнать базу и фильтр поиска групп с помощью утилиты ldapsearch:

  1. Выполните запрос:

    sh
    ldapsearch -x -H <URL> -b <Base DN> -D <Bind DN> -w <Password> <Filter>

    где:

    • URL — URL-адрес LDAP-сервера (например, ldap://ldap.example.org:389);
    • Base DN — предполагаемая база поиска, полученная из доменного имени сервера (например, для example.org это dc=example,dc=org);
    • Bind DN — DN пользователя, от имени которого выполняется запрос (например, cn=admin,dc=example,dc=org);
    • Password — пароль пользователя, от имени которого выполняется запрос;
    • Filter — фильтр поиска. Например, чтобы найти группу admins, можно использовать фильтр (cn=admins).

    Пример запроса:

    sh
    ldapsearch -x -H "ldap://ldap.example.org:389" -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w "password" "(cn=admins)"

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

    yaml
    dn: cn=admins,ou=Groups,dc=example,dc=org
    objectClass: posixGroup
    objectClass: top
    cn: admins
    memberUid: admin
    memberUid: ivan
  2. Определите полную базу поиска групп из результата запроса. Обычно это часть строки dn, соответствующая ветке с группами (например, ou=Groups,dc=example,dc=org).

  3. Сформируйте фильтр поиска групп из результата запроса. Вам потребуется атрибут, в котором хранятся идентификаторы пользователей, входящих в группу (например, memberUid).

    Пример фильтра: memberUid={1}.

Сохраните полученные базу и фильтр поиска групп, они понадобятся для настройки маппинга ролей в конфигурационных файлах ТестОпс.

4.2. Настройте маппинг ролей в конфигурационных файлах ТестОпс

Важно

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

Измените параметры маппинга ролей и поиска групп в конфигурационных файлах ТестОпс в зависимости от вашего типа развертывания:

Измените параметры в файле values.yaml:

  • auth.ldap.group.roleAttribute — введите название атрибута, в котором хранится имя группы;
  • auth.ldap.syncRoles — введите true, чтобы включить маппинг ролей между LDAP и ТестОпс;
  • auth.ldap.userGroupName — введите названия LDAP-групп, участники которых получат глобальную роль «Пользователь» в ТестОпс;
  • auth.ldap.adminGroupName — введите названия LDAP-групп, участники которых получат глобальную роль «Администратор» в ТестОпс;
  • auth.ldap.group.searchBase — введите базу поиска групп, которую вы сохранили на шаге 4.1;
  • auth.ldap.group.searchFilter — введите фильтр поиска групп, который вы сохранили на шаге 4.1.

Важно

Синхронизация ролей будет работать правильно только в случае, если параметр auth.defaultRole из шага 2 имеет значение ROLE_GUEST.

Примеры настроенных конфигурационных файлов ТестОпс для LDAP

yaml
auth:
  primary: ldap
  defaultRole: ROLE_GUEST
  ldap:
    enabled: true
    auth:
      user: user
      pass: SecretPaSSw0rd
    referral: follow
    url: ldap://ldap.example.com:389
    usernamesToLowercase: false
    passwordAttribute: userPassword
    user:
      dnPatterns: ""
      searchBase: ou=People,dc=example,dc=org
      searchFilter: (&(objectClass=person)(uid={0}))
    syncRoles: true
    uidAttribute: uid
    group:
      searchBase: ou=Groups,dc=example,dc=org
      searchFilter: memberUid={1}
      roleAttribute: cn
    userGroupName: testops_users
    adminGroupName: testops_admins

Использование LDAP вместе с локальной аутентификацией ТестОпс

Если LDAP указан как основной способ аутентификации в ТестОпс, при необходимости вы также можете использовать локальную аутентификацию:

  • Страница https://<домен_инстанса_ТестОпс>/login использует метод аутентификации, указанный в конфигурационных файлах ТестОпс в атрибуте primary или ALLURE_LOGIN_PRIMARY. Для данной инструкции это LDAP.
  • Страница https://<домен_инстанса_ТестОпс>/login/system использует локальную аутентификацию ТестОпс.

Чтобы войти в ТестОпс, например, с глобальной ролью «Администратор», перейдите на https://<домен_инстанса_ТестОпс>/login/system и используйте учетные данные локального пользователя.

Устранение неполадок

Если вы получаете ошибку «Request failed with status code 401» при попытке входа с использованием LDAP:

  1. Убедитесь, что URL-адрес LDAP-сервера, указанный в файле конфигурации, правильный.
  2. Убедитесь, что вы используете действительный SSL-сертификат.
  3. Проверьте, что учетные данные, указанные в файле конфигурации, правильные и не содержат пробела в конце (например, для Docker Compose это LDAP_LOGIN_SA и LDAP_LOGIN_SA_PASS).

Logo © 2026 Все права защищены. Сайт принадлежит компании ООО «Инструменты тестирования»