Uwierzytelnianie
Dwa sposoby uwierzytelniania, oba powiązane z ID Twojego klucza: podpisane żądania (zalecane) lub tokeny Bearer OAuth 2 client credentials.
- Podpisane żądania (HMAC-SHA256)
- OAuth 2 client credentials
- ID kluczy, sekrety i rotacja
- 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.
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 -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETID 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.