Langkau ke kandungan

Pengesahan

Dua cara untuk mengesahkan, kedua-duanya terikat pada ID kunci anda: permintaan bertandatangan (disyorkan) atau token bearer OAuth 2 client-credentials.

  1. Permintaan bertandatangan (HMAC-SHA256)
  2. Kelayakan klien OAuth 2
  3. ID kunci, rahsia dan putaran
  4. Senarai benar IP

Permintaan bertandatangan (HMAC-SHA256)

Hantar X-API-Key, X-Timestamp, X-Nonce dan X-Signature pada setiap panggilan. Tandatangan meliputi kaedah, sasaran permintaan yang tepat (laluan dan query), cap masa, nonce dan cincangan badan, jadi permintaan yang dimain semula atau diubah akan gagal pengesahan. Perbezaan jam sehingga lima minit diterima; penggunaan semula nonce dalam tempoh sepuluh minit ditolak dengan 401 api_nonce_reused.

Kira tandatangan ke atas bait mentah yang anda hantar. Sirikan JSON anda sekali, cincang bait yang tepat itu, dan hantar bait yang sama sebagai badan — menyirikan semula selepas menandatangani ialah punca paling biasa bagi 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");

Kelayakan klien OAuth 2

Jika menandatangani setiap permintaan tidak sesuai dengan stack anda, tukarkan ID kunci dan rahsia anda dengan token bearer jangka pendek di POST /v1/oauth/token (grant_type=client_credentials, dikodkan sebagai borang). Token sah selama 30 minit dan membawa skop yang diberikan kepada anda; anda boleh meminta subset dengan parameter scope.

Hantar token sebagai Authorization: Bearer bersama X-API-Key pada setiap panggilan. ID kunci disemak semula pada setiap permintaan, jadi membatalkan kunci akan menidaksahkan tokennya serta-merta.

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 kunci, rahsia dan putaran

Kunci sandbox bermula dengan dt_sbx_, kunci production dengan dt_live_. Sesuatu kunci milik satu persekitaran dan satu rakan kongsi. Rahsia dipaparkan sekali — semasa penciptaan, semasa putaran dan melalui pautan pendedahan — dan disimpan dalam bentuk cincangan di pihak kami.

Putar daripada portal pembangun: ID kunci dan rahsia baharu dikeluarkan manakala kunci lama terus berfungsi sepanjang tempoh ihsan yang anda pilih (sehingga tujuh hari), supaya anda boleh bertukar tanpa gangguan perkhidmatan. Pembatalan berkuat kuasa serta-merta.

Senarai benar IP

Secara pilihan, kunci setiap persekitaran kepada set alamat IPv4/IPv6 atau julat CIDR dalam portal pembangun. Permintaan daripada alamat lain ditolak dengan 403 api_ip_not_allowed walaupun ditandatangani dengan betul. Biarkan senarai kosong untuk menerima sebarang asal.