Мазмұнға өту

Аутентификация

Аутентификацияның екі тәсілі бар, екеуі де кілт ID-іңізге байланған: қол қойылған сұраулар (ұсынылады) немесе OAuth 2 client-credentials bearer токендері.

  1. Қол қойылған сұраулар (HMAC-SHA256)
  2. OAuth 2 client credentials
  3. Кілт ID-лері, құпия кілттер және ауыстыру
  4. IP рұқсат тізімі

Қол қойылған сұраулар (HMAC-SHA256)

Әр шақыруда X-API-Key, X-Timestamp, X-Nonce және X-Signature жіберіңіз. Қолтаңба әдісті, сұраудың дәл нысанасын (жол мен сұрау жолы), timestamp-ті, 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

Әр сұрауға қол қою технологиялық стекіңізге сай келмесе, кілт ID мен құпия кілтті POST /v1/oauth/token мекенжайында (grant_type=client_credentials, form-encoded) қысқа мерзімді bearer токеніне айырбастаңыз. Токендер 30 минут жарамды және сізге берілген scope-тарды қамтиды; scope параметрі арқылы олардың бір бөлігін сұрай аласыз.

Токенді әр шақыруда X-API-Key-мен бірге Authorization: Bearer ретінде жіберіңіз. Кілт ID әр сұрауда қайта тексеріледі, сондықтан кілтті қайтарып алу оның токендерін бірден жарамсыз етеді.

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

Кілт ID-лері, құпия кілттер және ауыстыру

Sandbox кілттері dt_sbx_ деп, production кілттері dt_live_ деп басталады. Кілт бір ортаға және бір серіктеске тиесілі. Құпия кілттер бір рет көрсетіледі — жасалғанда, ауыстырылғанда және ашу сілтемесі арқылы — ал біз оларды хэштелген түрде сақтаймыз.

Әзірлеуші порталынан ауыстырыңыз: жаңа кілт ID мен құпия кілт беріледі, ал ескі кілт сіз таңдаған жеңілдік кезеңі бойы (жеті күнге дейін) жұмысын жалғастырады, сондықтан үзіліссіз ауыса аласыз. Қайтарып алу бірден күшіне енеді.

IP рұқсат тізімі

Қаласаңыз, әзірлеуші порталында әр ортаны IPv4/IPv6 мекенжайлары немесе CIDR ауқымдары жиынына байлай аласыз. Басқа кез келген мекенжайдан келген сұраулар дұрыс қол қойылса да 403 api_ip_not_allowed қатесімен қабылданбайды. Кез келген көзді қабылдау үшін тізімді бос қалдырыңыз.