İçeriğe geç

Kimlik doğrulama

Her ikisi de anahtar kimliğinize bağlı iki kimlik doğrulama yolu: imzalı istekler (önerilen) veya OAuth 2 client-credentials bearer belirteçleri.

  1. İmzalı istekler (HMAC-SHA256)
  2. OAuth 2 istemci kimlik bilgileri (client credentials)
  3. Anahtar kimlikleri, gizli anahtarlar ve yenileme
  4. IP izin listesi

İmzalı istekler (HMAC-SHA256)

Her çağrıda X-API-Key, X-Timestamp, X-Nonce ve X-Signature gönderin. İmza; yöntemi, tam istek hedefini (yol ve sorgu), zaman damgasını, nonce değerini ve gövde özetini kapsar; böylece tekrar oynatılan veya değiştirilen bir istek doğrulamada başarısız olur. Beş dakikaya kadar saat sapması tolere edilir; bir nonce değerinin on dakika içinde yeniden kullanılması 401 api_nonce_reused ile reddedilir.

İmzayı, ağa gönderdiğiniz ham baytlar üzerinden hesaplayın. JSON'unuzu bir kez serileştirin, tam olarak o baytların özetini alın ve aynı baytları gövde olarak gönderin — imzaladıktan sonra yeniden serileştirmek, api_signature_invalid hatasının en yaygın nedenidir.

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 istemci kimlik bilgileri (client credentials)

Her isteği imzalamak teknoloji yığınınıza uymuyorsa, anahtar kimliğinizi ve gizli anahtarınızı POST /v1/oauth/token adresinde kısa ömürlü bir bearer belirteciyle değiştirin (grant_type=client_credentials, form kodlamalı). Belirteçler 30 dakika geçerlidir ve size verilen kapsamları taşır; scope parametresiyle bunların bir alt kümesini talep edebilirsiniz.

Belirteci her çağrıda X-API-Key ile birlikte Authorization: Bearer olarak gönderin. Anahtar kimliği her istekte yeniden kontrol edilir; bu nedenle bir anahtarı iptal etmek belirteçlerini anında geçersiz kılar.

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

Anahtar kimlikleri, gizli anahtarlar ve yenileme

Test ortamı anahtarları dt_sbx_ ile, canlı ortam anahtarları dt_live_ ile başlar. Bir anahtar tek bir ortama ve tek bir iş ortağına aittir. Gizli anahtarlar bir kez gösterilir — oluşturma sırasında, yenileme sırasında ve görüntüleme bağlantısıyla — ve bizim tarafımızda özet (hash) olarak saklanır.

Geliştirici portalından yenileyin: yeni bir anahtar kimliği ve gizli anahtar verilirken eski anahtar seçtiğiniz geçiş süresi boyunca (en fazla yedi gün) çalışmaya devam eder; böylece kesinti olmadan geçiş yapabilirsiniz. İptal anında gerçekleşir.

IP izin listesi

İsteğe bağlı olarak, geliştirici portalında her ortamı bir dizi IPv4/IPv6 adresine veya CIDR aralığına sabitleyin. Başka bir adresten gelen istekler, doğru imzalanmış olsalar bile 403 api_ip_not_allowed ile reddedilir. Her kaynağı kabul etmek için listeyi boş bırakın.