В TestRail можно использовать как стандартную авторизацию, так и авторизацию через Active Directory или LDAP. Недавно возникла необходимость настройки в TestRail авторизации через LDAP о чём в данной статье и расскажу.

Если вы устанавливали LDAP на сервере Linux, то вам необходимо предварительно установить пакет php-ldap.

Пример для CentOS:

yum -y install php-ldap

Возьмём для примера следующие исходные данные (данные не реальные, но помогут понять суть описанного в статье):

  • Сервер LDAP: ldap.victorz.ru
  • Порт подключения к LDAP: 389
  • Логин для подключения к LDAP: userLogin
  • Пароль для подключения к LDAP: userPassword
  • LDAP OU (организационная единица): People
  • LDAP CN (общее имя): victorz
  • LDAP DC (компонент домена): ru
  • Фильтр поиска (выражение фильтра, которое используется для поиска и извлечения объекта каталога аутентифицированного пользователя): %name%
  • Имя атрибута LDAP, в котором хранится полное имя пользователя: displayname
  • Имя атрибута LDAP, в котором хранится адрес электронной почты пользователя: mail

Все указанные данные мы должны получить у администратора LDAP-сервера.

Будьте внимательны при написании атрибутов и данных, так как они чувствительны к регистру: displayname и displayName – разные атрибуты.

Теперь скачиваем скрипт auth.php с официального сайта разработчика TestRail: docs.gurock.com/testrail-integration/auth-ldap

Открываем скрипт и правим его. У меня получилось следующее:

define('AUTH_HOST', 'ldap://ldap.victorz.ru');
define('AUTH_PORT', 389);
define('AUTH_BIND_DN', 'cn=userLogin,dc=victorz,dc=ru');
define('AUTH_BIND_PASSWORD', 'userPassword');
define('AUTH_DN', 'OU=People,DC=victorz,DC=ru');
define('AUTH_FILTER', '(uid=%name%)');
define('AUTH_FALLBACK', true);
define('AUTH_CREATE_ACCOUNT', false);
define('AUTH_NAME_ATTRIBUTE', 'displayname');
define('AUTH_MAIL_ATTRIBUTE', 'mail');

Приведены только строки блока, которые правились. Остальное в скрипте не рекомендуется править.

Прокомментируем следующие строки:

  • define(‘AUTH_FALLBACK’, true):
    true – пользователь сможет авторизоваться под доменной учётной записью через LDAP, а также через внутреннюю учётную запись TestRail. Удобно если TestRail потеряет связь с серверов LDAP;
    false – пользователь сможет авторизоваться только через доменную учётную запись через LDAP.
  •  define(‘AUTH_CREATE_ACCOUNT’, false):
    true – если пользователь авторизуется с доменной учётной записью и в TestRail не найдена учётная запись, то в TestRail автоматически будет создана учётная запись для пользователя. Не удобно, если у вас ограниченное количество лицензий TestRail, а размер организации большой и превышает количество лицензий TestRail.
    false — если пользователь авторизуется с доменной учётной записью и в TestRail не найдена учётная запись, то пользователь будет «послан к администратору TestRail».
  • define(‘AUTH_BIND_DN’, ‘cn=userLogin,dc=victorz,dc=ru’). В этой строке могут просто указывать userLogin без dc, однако в этом случае TestRail не сможет авторизоваться на LDAP-сервере. Учтите этот момент.

Отредактированный скрипт auth.php помещаете в каталог {КАТАЛОГ_УСТАНОВКИ_TESRTAIL}/custom/auth

После того как скрипт будет помещён в требуемый каталог сразу включится авторизация через LDAP и это мы можем видеть в административной части системы Administration -> Site Setting -> Login:

Интеграция TestRail с LDAP

На этом настройка завершена.