В 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:
На этом настройка завершена.