میتوانید TestRail را با سیستمهای احراز هویت خارجی مانند Active Directory، پایگاههای داده، اپلیکیشنهای دیگر و APIها یکپارچه کنید تا Single sign-on را پیادهسازی کنید و حسابهای کاربری اولیه TestRail را بسازید. این مقاله جزئیات فنی این یکپارچهسازی را توضیح میدهد و نشان میدهد چطور اسکریپتهای یکپارچهسازی خودتان را بسازید. اگر فقط به دنبال جزئیات یکپارچهسازی TestRail با Active Directory هستید، لطفاً این مقاله را بخوانید.
جزئیات پیادهسازی #
برای اینکه TestRail بتواند تقریباً با هر سیستم خارجی یکپارچه شود، از اسکریپتهای احراز هویت پشتیبانی میکند. اگر یک اسکریپت احراز هویت نصب کنید، وقتی کاربر تلاش میکند login کند، TestRail از اسکریپت شما میپرسد که آیا credentials آن کاربر معتبر هستند یا نه.
اینکه اسکریپت احراز هویت چطور credentials را بررسی کند، به سیستم احراز هویت خارجی بستگی دارد. برای مثال، اسکریپت میتواند برای بررسی username و login از یک پایگاه داده query بگیرد. یا میتواند یک Web API را برای بررسی credentials فراخوانی کند. صرفنظر از روشی که برای بررسی credentials استفاده میشود، اسکریپت نتیجه احراز هویت را به TestRail برمیگرداند تا login کاربر رد یا تأیید شود.
مبانی اسکریپت #
اسکریپت احراز هویت TestRail معمولاً با PHP نوشته میشود. اگر میخواهید TestRail را با یک ابزار یا زبان برنامهنویسی دیگر یکپارچه کنید، کافی است ابزار خارجی خودتان یا حتی Web API را از داخل اسکریپت احراز هویت فراخوانی کنید.
ساختار یک اسکریپت احراز هویت TestRail بسیار ساده است. در اصل فقط باید یک authenticate_user function را پیادهسازی کنید. TestRail نام کاربری و رمز عبور را به این function ارسال میکند. بعد از بررسی credentials، اسکریپت باید نتیجه احراز هویت را به TestRail برگرداند.
// The anatomy of a basic authentication script
function authenticate_user($name, $password)
{
// Verify the credentials and return result
// ..
}
نکته: توصیه میشود تگ پایانی PHP را نبندید <?php در انتهای فایل. این کار باعث میشود در انتهای فایل white-space اضافهای وجود نداشته باشد که بتواند رفتار خروجی PHP را تغییر دهد.
برگرداندن نتیجه #
وقتی اسکریپت credentials را بررسی کرد، باید نتیجه احراز هویت را به TestRail برگرداند. این کار با ایجاد یک AuthResult object و ارسال همه آرگومانهای مرتبط انجام میشود. اسکریپت همچنین میتواند برای اعلام یک خطای غیرقابلبازیابی، مثل خطای اتصال به سیستم خارجیای که اسکریپت به آن وابسته است، exception ایجاد کند. بخشهای زیر توضیح میدهند چطور نتیجهها را به TestRail برگردانید.
اعلام خطاها #
اگر هنگام بررسی credentials کاربر خطایی رخ داد، توصیه میشود یک exception ایجاد کنید. برای مثال، اگر اسکریپت شما برای بررسی نام کاربری و رمز عبور به پایگاه داده وصل میشود اما پایگاه داده در دسترس نیست، کافی است یک exception با پیام خطای مناسب ایجاد کنید. توصیه میشود برای این کار از AuthException نوع exception در TestRail استفاده کنید:
// The anatomy of a basic authentication script
function authenticate_user($name, $password)
{
// Verify the credentials and return result
// ..
}
احراز هویت رد شد #
اگر اسکریپت شما تشخیص داد که احراز هویت ناموفق بوده و دسترسی کاربر باید رد شود، کافی است یک نمونه از AuthResultDenied class را بسازید و برگردانید.
function authenticate_user($name, $password)
{
// [..]
return new AuthResultDenied();
}
احراز هویت موفق بود #
برای مجاز کردن کاربر، کافی است یک نمونه از AuthResultSuccess class را برگردانید. TestRail برای وصل کردن نتیجه احراز هویت به حسابهای کاربری داخلی خودش، به آدرس ایمیل کاربر نیاز دارد.
اگر از آدرس ایمیل کاربر بهعنوان login استفاده میکنید، کافی است همان login را به TestRail برگردانید. در غیر این صورت، باید آدرس ایمیل را بهعنوان بخشی از فرایند احراز هویت پیدا کنید؛ برای مثال، با خواندن آدرس ایمیل کاربر از پایگاه داده احراز هویت یا سیستم خارجی خودتان.
function authenticate_user($name, $password)
{
// [..]
return new AuthResultSuccess($user_email);
}
TestRail همچنین به شما اجازه میدهد برای کاربرانی که برای اولین بار login میکنند، بهصورت خودکار حساب کاربری جدید بسازید. این روش برای ساخت خودکار همه حسابهای کاربری اولیه بسیار مفید است.
برای مثال، اگر میخواهید TestRail را با Active Directory یکپارچه کنید، میتوانید از TestRail بخواهید برای کاربرانی که برای اولین بار login میکنند یک حساب کاربری بسازد. سپس کافی است لینک نصب TestRail خودتان را از طریق ایمیل برای همه کاربران بفرستید و TestRail بهصورت خودکار و بدون نیاز به کار اضافی، حسابهای کاربری جدید را ایجاد میکند. برای استفاده از این قابلیت، باید نام کامل کاربر، یعنی نام و نام خانوادگی، را هم در اختیار TestRail بگذارید.
function authenticate_user($name, $password)
{
// [..]
$result = new AuthResultSuccess($user_email);
$result->create_account = true; // Create an account, if needed
$result->name = $user_name; // 'Bob Smith'
$result->role_id = 3; // Optional: ID of the user's role
$result->group_ids = array(1, 2); // Optional: IDs of the user's groups
$result->is_admin = true; // Optional: Admin privileges
return $result;
}
fallback احراز هویت #
گاهی نمیتوانید یا نمیخواهید بعضی کاربران خاص را از طریق اسکریپت احراز هویت کنید، اما میخواهید از سیستم احراز هویت داخلی TestRail استفاده شود. در این موارد میتوانید از TestRail بخواهید به سیستم احراز هویت خودش fallback کند. البته میتوانید این کار را موردبهمورد انجام دهید.
برای مثال، میتوانید به کاربران اجازه دهید هم با credentials مربوط به Active Directory و هم با حساب TestRail خودشان login کنند. اگر کاربر بهجای login مربوط به Active Directory، یک آدرس ایمیل را بهعنوان نام کاربری وارد کند، میتوانید از TestRail بخواهید برای این کاربر از سیستم احراز هویت خودش استفاده کند. برای این کار، کافی است یک نمونه از AuthResultFallback class را برگردانید.
function authenticate_user($name, $password)
{
// [..]
return new AuthResultFallback();
}
نصب #
برای نصب یک اسکریپت احراز هویت، کافی است نام آن را auth.php بگذارید و آن را در custom/auth/ در دایرکتوری زیرِ محل نصب TestRail شما. بعد از اضافه شدن اسکریپت به TestRail، از آن برای احراز هویت کاربران استفاده میشود. مسیر دقیق و وضعیت authentication script را هم میتوانید در TestRail، از مسیر Admin > Site Settings > Auth.
برای غیرفعال کردن اسکریپت، کافی است فایل auth.php را حذف کنید یا نام آن را تغییر دهید. بعد از آن، کاربران میتوانند با آدرس ایمیل و password حساب TestRail خود وارد شوند.

