Hopp til innholdet

Autentisering

To måter å autentisere på, begge knyttet til nøkkel-ID-en din: signerte forespørsler (anbefalt) eller bearer-tokener med OAuth 2-klientlegitimasjon.

  1. Signerte forespørsler (HMAC-SHA256)
  2. OAuth 2-klientlegitimasjon
  3. Nøkkel-ID-er, hemmeligheter og rotering
  4. IP-tillatelsesliste

Signerte forespørsler (HMAC-SHA256)

Send X-API-Key, X-Timestamp, X-Nonce og X-Signature i hvert kall. Signaturen dekker metoden, det nøyaktige forespørselsmålet (sti og spørring), tidsstempelet, nonce-verdien og hashen av forespørselsteksten, slik at en gjentatt eller endret forespørsel ikke består verifiseringen. Klokkeavvik på opptil fem minutter tolereres; gjenbruk av en nonce innen ti minutter avvises med 401 api_nonce_reused.

Beregn signaturen over de rå bytene du faktisk sender. Serialiser JSON-en én gang, hash nøyaktig de bytene og send de samme bytene som forespørselstekst – ny serialisering etter signering er den vanligste årsaken til 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-klientlegitimasjon

Hvis det ikke passer stakken din å signere hver forespørsel, kan du bytte nøkkel-ID og hemmelighet mot et kortlivet bearer-token på POST /v1/oauth/token (grant_type=client_credentials, skjemakodet). Tokener varer i 30 minutter og har tilgangene du er tildelt; du kan be om et utvalg med parameteren scope.

Send tokenet som Authorization: Bearer sammen med X-API-Key i hvert kall. Nøkkel-ID-en kontrolleres på nytt ved hver forespørsel, så når en nøkkel tilbakekalles, blir tokenene dens ugyldige umiddelbart.

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

Nøkkel-ID-er, hemmeligheter og rotering

Sandkassenøkler begynner med dt_sbx_, produksjonsnøkler med dt_live_. En nøkkel tilhører ett miljø og én partner. Hemmeligheter vises én gang – ved oppretting, ved rotering og via visningslenken – og lagres kun som hash hos oss.

Roter fra utviklerportalen: en ny nøkkel-ID og hemmelighet utstedes mens den gamle nøkkelen fortsetter å virke i overgangsperioden du velger (opptil sju dager), slik at du kan bytte uten nedetid. Tilbakekalling skjer umiddelbart.

IP-tillatelsesliste

Du kan eventuelt låse hvert miljø til et sett IPv4/IPv6-adresser eller CIDR-områder i utviklerportalen. Forespørsler fra andre adresser avvises med 403 api_ip_not_allowed selv om de er riktig signert. La listen stå tom for å godta alle opprinnelser.