Przejdź do treści

Uwierzytelnianie

Dwa sposoby uwierzytelniania, oba powiązane z ID Twojego klucza: podpisane żądania (zalecane) lub tokeny Bearer OAuth 2 client credentials.

  1. Podpisane żądania (HMAC-SHA256)
  2. OAuth 2 client credentials
  3. ID kluczy, sekrety i rotacja
  4. Lista dozwolonych IP

Podpisane żądania (HMAC-SHA256)

Wysyłaj X-API-Key, X-Timestamp, X-Nonce i X-Signature w każdym wywołaniu. Podpis obejmuje metodę, dokładny cel żądania (ścieżkę i query), znacznik czasu, nonce oraz hash treści, więc powtórzone lub zmienione żądanie nie przejdzie weryfikacji. Tolerowane jest odchylenie zegara do pięciu minut; ponowne użycie nonce w ciągu dziesięciu minut jest odrzucane z 401 api_nonce_reused.

Obliczaj podpis na tych samych surowych bajtach, które wysyłasz. Serializuj JSON raz, haszuj dokładnie te bajty i wysyłaj te same bajty jako treść — ponowna serializacja po podpisaniu to najczęstsza przyczyna 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

Jeśli podpisywanie każdego żądania nie pasuje do Twojego stosu technologicznego, wymień ID klucza i sekret na krótkotrwały token Bearer przez POST /v1/oauth/token (grant_type=client_credentials, form-encoded). Tokeny są ważne 30 minut i zawierają przyznane Ci zakresy; parametrem scope możesz poprosić o ich podzbiór.

Wysyłaj token jako Authorization: Bearer razem z X-API-Key w każdym wywołaniu. ID klucza jest sprawdzane przy każdym żądaniu, więc unieważnienie klucza natychmiast unieważnia jego tokeny.

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 kluczy, sekrety i rotacja

Klucze do sandboksa zaczynają się od dt_sbx_, klucze produkcyjne od dt_live_. Klucz należy do jednego środowiska i jednego partnera. Sekrety są wyświetlane raz — przy utworzeniu, przy rotacji i przez link do ujawnienia — i przechowywane u nas wyłącznie jako hash.

Rotację wykonujesz w portalu dewelopera: wydawane są nowe ID klucza i sekret, a stary klucz działa dalej przez wybrany przez Ciebie okres przejściowy (do siedmiu dni), więc przełączysz się bez przestoju. Unieważnienie działa natychmiast.

Lista dozwolonych IP

Opcjonalnie w portalu dewelopera możesz przypisać każde środowisko do zestawu adresów IPv4/IPv6 lub zakresów CIDR. Żądania z każdego innego adresu są odrzucane z 403 api_ip_not_allowed, nawet jeśli są poprawnie podpisane. Zostaw listę pustą, aby akceptować dowolne źródło.