Prijeđi na sadržaj

Autentifikacija

Dva načina autentifikacije, oba vezana uz ID vašeg ključa: potpisani zahtjevi (preporučeno) ili bearer tokeni OAuth 2 client-credentials.

  1. Potpisani zahtjevi (HMAC-SHA256)
  2. OAuth 2 client credentials
  3. ID-jevi ključeva, tajni ključevi i rotacija
  4. Popis dopuštenih IP adresa

Potpisani zahtjevi (HMAC-SHA256)

Šaljite X-API-Key, X-Timestamp, X-Nonce i X-Signature uz svaki poziv. Potpis obuhvaća metodu, točan cilj zahtjeva (putanju i query), vremensku oznaku, nonce i hash tijela, pa ponovljeni ili izmijenjeni zahtjev ne prolazi provjeru. Tolerira se odstupanje sata do pet minuta; ponovna upotreba noncea unutar deset minuta odbija se s 401 api_nonce_reused.

Izračunajte potpis nad sirovim bajtovima koje šaljete. Serijalizirajte JSON jednom, hashirajte točno te bajtove i pošaljite iste bajtove kao tijelo — ponovna serijalizacija nakon potpisivanja najčešći je uzrok pogreške 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

Ako potpisivanje svakog zahtjeva ne odgovara vašem stacku, zamijenite ID ključa i tajni ključ za kratkotrajni bearer token na POST /v1/oauth/token (grant_type=client_credentials, kodirano kao obrazac). Tokeni vrijede 30 minuta i nose dodijeljene vam ovlasti; podskup možete zatražiti parametrom scope.

Šaljite token kao Authorization: Bearer zajedno s X-API-Key uz svaki poziv. ID ključa ponovno se provjerava pri svakom zahtjevu, pa opoziv ključa odmah poništava njegove tokene.

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-jevi ključeva, tajni ključevi i rotacija

Sandbox ključevi počinju s dt_sbx_, produkcijski s dt_live_. Ključ pripada jednom okruženju i jednom partneru. Tajni ključevi prikazuju se jednom — pri izradi, pri rotaciji i putem poveznice za prikaz — a kod nas se pohranjuju hashirani.

Rotirajte s portala za programere: izdaju se novi ID ključa i tajni ključ, dok stari ključ i dalje radi tijekom prijelaznog razdoblja koje odaberete (do sedam dana), tako da se možete prebaciti bez prekida rada. Opoziv je trenutačan.

Popis dopuštenih IP adresa

Po želji vežite svako okruženje uz skup IPv4/IPv6 adresa ili CIDR raspona na portalu za programere. Zahtjevi s bilo koje druge adrese odbijaju se s 403 api_ip_not_allowed čak i kada su ispravno potpisani. Ostavite popis prazan kako biste prihvatili bilo koje ishodište.