روشهای احراز هویت
وبسرویسهای Bot سیستم رزرواسیون سپهر از دو روش برای احراز هویت پشتیبانی میکنند. انتخاب روش مناسب، به نوع کاربرد کلاینت و نحوه اجرای عملیات بستگی دارد.
روشهای احراز هویت
1. Username / Password Authentication
این روش برای زمانی مناسب است که کلاینت قصد دارد یک Agent، Bot یا سرویس نرمافزاری مستقل ایجاد کند که بتواند بدون دخالت مستقیم کاربر، بهصورت خودکار و مداوم عملیات موردنظر را در سیستم سپهر انجام دهد.
برای مثال، یک Agent میتواند بهصورت شبانهروزی قیمت پروازها را بر اساس قوانین و سیاستهای تعریفشده توسط کلاینت بررسی و بهروزرسانی کند.
در این روش، کلاینت در هر درخواست Username و Password مربوط به حساب سرویس را ارسال میکند. همچنین برای افزایش امنیت، IP کلاینت باید پیش از استفاده در سیستم سپهر بهعنوان IP مورد اعتماد (Trusted IP) ثبت شده باشد.
این روش زمانی پیشنهاد میشود که عملیات توسط یک سرویس یا Agent مستقل انجام میشود و نیازی نیست هر عملیات به یک کاربر انسانی مشخص نسبت داده شود.
نکته: در این روش، عملیات انجامشده در سیستم سپهر با هویت حساب کاربری مورد استفاده توسط Agent ثبت میشود و نه با هویت یک کاربر انسانی که بهصورت تعاملی وارد سیستم شده باشد.
2. Token-based Authentication (SSO)
این روش برای زمانی مناسب است که کلاینت قصد دارد رابط کاربری (UI) یا نرمافزار اختصاصی خود را روی قابلیتهای سیستم رزرواسیون سپهر ایجاد کند.
در این حالت، کاربر ابتدا از طریق Single Sign-On (SSO) سیستم سپهر وارد حساب کاربری خود میشود. پس از ورود موفق، سیستم SSO یک Token در اختیار کلاینت قرار میدهد.
کلاینت باید این AccessToken را در درخواستهای بعدی به Web Serviceهای Bot ارسال کند. سیستم سپهر با استفاده از Token میتواند تشخیص دهد که درخواست توسط کدام کاربر ارسال شده است.
مزیت اصلی این روش این است که عملیات انجامشده در Web Serviceها با هویت و سطح دسترسی همان کاربری که از طریق SSO وارد شده است اجرا میشود.
برای مثال، فرض کنید یک کاربر با نام Ali از طریق SSO وارد UI اختصاصی کلاینت شده و قصد دارد نرخ یک پرواز را تغییر دهد. درخواست تغییر نرخ با Token مربوط به کاربر Ali به سیستم سپهر ارسال میشود. در نتیجه:
- سطح دسترسی کاربر
Aliدر سیستم سپهر برای انجام عملیات بررسی میشود. - عملیات با هویت کاربر
Aliانجام میشود. - لاگ و تاریخچه عملیات به کاربر
Aliنسبت داده میشود. - در صورت نیاز به بررسی یا پیگیری بعدی، مشخص است که چه کاربری این عملیات را انجام داده است.
بنابراین این روش برای UIها و نرمافزارهایی که کاربر انسانی مستقیماً با آنها کار میکند توصیه میشود؛ بهخصوص زمانی که حفظ هویت کاربر، کنترل سطح دسترسی و ثبت دقیق تاریخچه عملیات اهمیت دارد.
انتخاب روش مناسب
بهصورت خلاصه:
| سناریو | روش پیشنهادی |
|---|---|
| اجرای خودکار عملیات توسط Bot یا Agent | Username / Password |
| اجرای عملیات بهصورت شبانهروزی بدون دخالت کاربر | Username / Password |
| پیادهسازی UI اختصاصی روی سیستم سپهر | SSO / Token-based |
| نیاز به شناسایی کاربر واقعی انجامدهنده عملیات | SSO / Token-based |
| اعمال سطح دسترسی کاربر در سیستم سپهر | SSO / Token-based |
| ثبت لاگ و تاریخچه به نام کاربر واقعی | SSO / Token-based |
پیشنهاد کلی
اگر کلاینت در حال ساخت یک Agent یا Bot مستقل است که قرار است بدون دخالت انسان عملیات را انجام دهد، استفاده از Username / Password Authentication مناسبتر است.
اگر کلاینت در حال ساخت یک رابط کاربری اختصاصی است که کاربران از طریق آن با سیستم سپهر کار میکنند، استفاده از SSO / Token-based Authentication توصیه میشود تا هویت، سطح دسترسی و تاریخچه عملیات هر کاربر در سیستم سپهر حفظ شود.
مثال ها
مثال روش Username / Password Authentication
در این روش، کلاینت UserName و Password را در Body درخواست ارسال میکند. رمز عبور باید مطابق فرمت تعریفشده در مستندات API به صورت MD5 شده ارسال شود.
curl -X POST https://SepehrApiTest.ir/api/B2M/Bot/Flight/Charter/FlightManagement/Aircraft/GetList/V1 \
-H "Content-Type: application/json; charset=utf-8" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip, deflate" \
-d '{
"UserName": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b"
}'
مثال روش Token-based Authentication (SSO)
در این روش، کلاینت ابتدا از طریق Single Sign-On (SSO) یک AccessToken دریافت میکند و سپس Token دریافتشده را در Body درخواست ارسال میکند.
curl -X POST https://SepehrApiTest.ir/api/B2M/Bot/Flight/Charter/FlightManagement/Aircraft/GetList/V1 \
-H "Content-Type: application/json; charset=utf-8" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip, deflate" \
-d '{
"AccessToken": "xHOFDNE5MtNQQUYeNjPXDROGTSlztt72rzY4Ldj5"
}'
نکته: در هر درخواست فقط یکی از روشهای احراز هویت را استفاده کنید. در صورت ارسال AccessToken، نیازی به ارسال همزمان UserName و Password نیست.