﻿---
title: "VerifyToken | SingleSignOn | Bot | مستندات وب سرویس سپهر"
---

# SingleSignOn VerifyToken



این وب‌سرویس برای **اعتبارسنجی Token دریافت‌شده از فرآیند Single Sign-On (SSO)** استفاده می‌شود.

پس از اینکه کاربر با موفقیت در سیستم سپهر وارد شد و `Token` به `callbackUrl` سایت شما ارسال شد، باید این وب‌سرویس را فراخوانی کنید تا مشخص شود آیا `Token` دریافت‌شده معتبر است یا خیر.

در صورت معتبر بودن Token، اطلاعات کاربر نیز در پاسخ این وب‌سرویس در اختیار شما قرار می‌گیرد.

> **Important:** توصیه می‌شود پس از دریافت و اعتبارسنجی موفق Token، Session مربوط به کاربر را در سیستم خود ایجاد کنید و در درخواست‌های بعدی، به جای Token اولیه SSO از Session داخلی خود استفاده کنید.

---

## API Endpoint

```http
POST https://{SupplierWebsiteUrl}/api/IAM/Bot/SingleSignOn/VerifyToken/V1
```

---

## Request Parameters

- `Token`

  string

  [Required]

  Token دریافت‌شده از سپهر در مرحله قبل از طریق `callbackUrl`.

  این Token پس از احراز هویت موفق کاربر در سیستم سپهر ایجاد شده و به آدرس Callback سایت شما ارسال می‌شود.

---

## Sample Request

```curl
curl -X POST https://SepehrApiTest.ir/api/IAM/Bot/SingleSignOn/VerifyToken/V1 \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip, deflate" \
  -d '{
  "Token": "1tyGPflYdMFQSrwmgwBFLevxrmsehYhqnlTIVER2"
}'
```

---

## Response Data

- `isVerified`

  boolean

  مشخص می‌کند که Token ارسال‌شده معتبر است یا خیر.

  - `true` — Token معتبر است و می‌توانید Session مربوط به کاربر را در سیستم خود ایجاد کنید.
  - `false` — Token معتبر نیست و نباید کاربر را احراز هویت‌شده در نظر بگیرید.


- `verificationError`

  string

  در صورتی که Token معتبر نباشد، دلیل عدم اعتبار Token در این فیلد برگردانده می‌شود.

  در صورت معتبر بودن Token، مقدار این فیلد `null` خواهد بود.


- `userType`

  string enum

  نوع کاربری که Token متعلق به آن است.

  مقادیر قابل قبول:

  | مقدار | توضیحات |
  |---|---|
  | `B2M` | Token مربوط به یک کاربر دفتر مرکزی سپهر است. |
  | `B2B` | Token مربوط به یک کاربر از آژانس‌های زیرمجموعه است. |
  | `Airport` | Token مربوط به یکی از کارکنان فرودگاه است. |
  | `Support` | Token مربوط به یکی از کاربران سیستم پشتیبانی است. |
  | `HotelReception` | Token مربوط به یکی از کارکنان پذیرش هتل است. |


- `userId`

  integer

  شناسه منحصربه‌فرد کاربر در سیستم سپهر.


- `username`

  string

  نام کاربری که Token به آن تعلق دارد.


- `b2B_User`

  complex type | null

  در صورتی که Token مربوط به یک کاربر با نوع `B2B` باشد، اطلاعات تکمیلی آژانس مربوط به کاربر در این فیلد قرار می‌گیرد.

  در صورتی که کاربر از نوع `B2B` نباشد، مقدار این فیلد `null` خواهد بود.

  - `agencyId`

    integer

    شناسه منحصربه‌فرد آژانس زیرمجموعه‌ای که کاربر متعلق به آن است.

  - `agencyName`

    string

    نام آژانس زیرمجموعه‌ای که کاربر متعلق به آن است.


## Sample Response

```json
{
  "isVerified": true,
  "verificationError": null,
  "userType": "B2M",
  "userId": 1966,
  "username": "usertest",
  "b2B_User": null
}
```

---

## Authentication Flow

این وب‌سرویس معمولاً در مرحله دوم فرآیند Single Sign-On استفاده می‌شود:

```text
User
 │
 │ Login
 ▼
Sepehr SSO
 │
 │ Generate Token
 ▼
Your callbackUrl
 │
 │ POST { Token }
 ▼
Your Website
 │
 │ VerifyToken
 ▼
Sepehr API
 │
 ├── isVerified = true
 │       │
 │       ▼
 │   Create User Session
 │
 └── isVerified = false
         │
         ▼
     Reject Authentication
```

### خلاصه فرآیند

1. کاربر از طریق `CreateToken` به صفحه ورود سپهر هدایت می‌شود.
2. کاربر در سپهر احراز هویت می‌شود.
3. سپهر یک `Token` ایجاد می‌کند.
4. کاربر به `callbackUrl` سایت شما بازگردانده می‌شود.
5. Token از طریق `POST` به `callbackUrl` ارسال می‌شود.
6. سایت شما Token را دریافت می‌کند.
7. سایت شما `VerifyToken` را فراخوانی می‌کند.
8. در صورت `isVerified = true`، اطلاعات کاربر معتبر است.
9. می‌توانید Session مربوط به کاربر را در سیستم خود ایجاد کنید.
10. در صورت `isVerified = false`، نباید کاربر را احراز هویت‌شده در نظر بگیرید و می‌توانید دلیل خطا را از `verificationError` دریافت کنید.

---