﻿---
title: "روش‌های احراز هویت | Bot | مستندات وب سرویس سپهر"
---

# روش‌های احراز هویت




وب‌سرویس‌های 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** توصیه می‌شود تا هویت، سطح دسترسی و تاریخچه عملیات هر کاربر در سیستم سپهر حفظ شود.

<br>

## مثال ها

### مثال روش Username / Password Authentication

در این روش، کلاینت UserName و Password را در Body درخواست ارسال می‌کند. رمز عبور باید مطابق فرمت تعریف‌شده در مستندات API به صورت MD5 شده ارسال شود.

```curl
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"
}'
```

<br>

### مثال روش Token-based Authentication (SSO)

در این روش، کلاینت ابتدا از طریق Single Sign-On (SSO) یک AccessToken دریافت می‌کند و سپس Token دریافت‌شده را در Body درخواست ارسال می‌کند.

```curl
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"
}'
```

<br>

:::success
نکته: در هر درخواست فقط یکی از روش‌های احراز هویت را استفاده کنید. در صورت ارسال AccessToken، نیازی به ارسال هم‌زمان UserName و Password نیست.
:::