رفتن به محتوا

احراز هویت

دو روش احراز هویت، هر دو وابسته به شناسه کلید شما: درخواست‌های امضاشده (پیشنهادی) یا توکن‌های Bearer از نوع client credentials در OAuth 2.

  1. درخواست‌های امضاشده (HMAC-SHA256)
  2. OAuth 2 با client credentials
  3. شناسه کلید، کلید مخفی و چرخش
  4. فهرست IPهای مجاز

درخواست‌های امضاشده (HMAC-SHA256)

در هر فراخوانی X-API-Key، X-Timestamp، X-Nonce و X-Signature را بفرستید. امضا متد، مقصد دقیق درخواست (مسیر و کوئری)، مُهر زمانی، nonce و هش بدنه را پوشش می‌دهد، بنابراین درخواستی که تکرار یا دست‌کاری شده باشد در بررسی رد می‌شود. اختلاف ساعت تا پنج دقیقه پذیرفته است؛ استفاده دوباره از یک nonce در بازه ده دقیقه با 401 api_nonce_reused رد می‌شود.

امضا را روی همان بایت‌های خامی محاسبه کنید که ارسال می‌کنید. JSON خود را یک بار سریال‌سازی کنید، دقیقاً همان بایت‌ها را هش کنید و همان بایت‌ها را به‌عنوان بدنه بفرستید — سریال‌سازی دوباره پس از امضا رایج‌ترین علت api_signature_invalid است.

Node.js
const payload = JSON.stringify(body);
const ts = Math.floor(Date.now() / 1000);
const nonce = randomBytes(16).toString("hex");
const bodyHash = createHash("sha256").update(payload).digest("hex");
const canonical = ["POST", "/v1/flights/search", ts, nonce, bodyHash].join("\n");
const signature = createHmac("sha256", SECRET).update(canonical).digest("hex");

OAuth 2 با client credentials

اگر امضای هر درخواست با فناوری‌های شما سازگار نیست، شناسه کلید و کلید مخفی خود را در POST /v1/oauth/token (grant_type=client_credentials، با کدگذاری فرم) با یک توکن Bearer کوتاه‌عمر مبادله کنید. توکن‌ها 30 دقیقه اعتبار دارند و دامنه‌های دسترسی اعطاشده به شما را در خود دارند؛ می‌توانید با پارامتر scope زیرمجموعه‌ای از آن‌ها را درخواست کنید.

توکن را به شکل Authorization: Bearer همراه با X-API-Key در هر فراخوانی بفرستید. شناسه کلید در هر درخواست دوباره بررسی می‌شود، بنابراین ابطال یک کلید توکن‌های آن را بلافاصله نامعتبر می‌کند.

cURL
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
  -d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRET

شناسه کلید، کلید مخفی و چرخش

کلیدهای محیط آزمایشی با dt_sbx_ و کلیدهای عملیاتی با dt_live_ شروع می‌شوند. هر کلید متعلق به یک محیط و یک شریک است. کلیدهای مخفی فقط یک بار نمایش داده می‌شوند — هنگام ایجاد، هنگام چرخش و از طریق لینک نمایش — و در سمت ما به‌صورت هش‌شده ذخیره می‌شوند.

از پورتال توسعه‌دهندگان کلید را بچرخانید: شناسه کلید و کلید مخفی جدید صادر می‌شود و کلید قدیمی تا پایان مهلت انتقالی که انتخاب می‌کنید (تا هفت روز) کار می‌کند، تا بدون قطعی جابه‌جا شوید. ابطال فوری است.

فهرست IPهای مجاز

در صورت تمایل، هر محیط را در پورتال توسعه‌دهندگان به مجموعه‌ای از نشانی‌های IPv4/IPv6 یا بازه‌های CIDR محدود کنید. درخواست‌های هر نشانی دیگر، حتی اگر درست امضا شده باشند، با 403 api_ip_not_allowed رد می‌شوند. برای پذیرش هر مبدئی فهرست را خالی بگذارید.