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.
- İmzalı istekler (HMAC-SHA256)
- OAuth 2 istemci kimlik bilgileri (client credentials)
- Anahtar kimlikleri, gizli anahtarlar ve yenileme
- 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.
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 -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETAnahtar 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.