Zum Inhalt springen

Authentifizierung

Zwei Wege zur Authentifizierung, beide an Ihre Schlüssel-ID gebunden: signierte Anfragen (empfohlen) oder Bearer-Tokens per OAuth 2 Client Credentials.

  1. Signierte Anfragen (HMAC-SHA256)
  2. OAuth 2 Client Credentials
  3. Schlüssel-IDs, Secrets und Rotation
  4. IP-Zulassungsliste

Signierte Anfragen (HMAC-SHA256)

Senden Sie X-API-Key, X-Timestamp, X-Nonce und X-Signature bei jedem Aufruf. Die Signatur umfasst die Methode, das genaue Anfrageziel (Pfad und Query), den Zeitstempel, die Nonce und den Body-Hash, sodass eine wiederholte oder veränderte Anfrage die Prüfung nicht besteht. Eine Uhrabweichung von bis zu fünf Minuten wird toleriert; die Wiederverwendung einer Nonce innerhalb von zehn Minuten wird mit 401 api_nonce_reused abgelehnt.

Berechnen Sie die Signatur über die rohen Bytes, die Sie tatsächlich senden. Serialisieren Sie Ihr JSON einmal, hashen Sie genau diese Bytes und senden Sie dieselben Bytes als Body – erneutes Serialisieren nach dem Signieren ist die häufigste Ursache für 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

Wenn das Signieren jeder Anfrage nicht zu Ihrem Stack passt, tauschen Sie Schlüssel-ID und Secret unter POST /v1/oauth/token (grant_type=client_credentials, form-encoded) gegen ein kurzlebiges Bearer-Token. Tokens sind 30 Minuten gültig und tragen Ihre gewährten Berechtigungen; mit dem Parameter scope können Sie eine Teilmenge anfordern.

Senden Sie das Token als Authorization: Bearer zusammen mit X-API-Key bei jedem Aufruf. Die Schlüssel-ID wird bei jeder Anfrage erneut geprüft, sodass das Widerrufen eines Schlüssels seine Tokens sofort ungültig macht.

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

Schlüssel-IDs, Secrets und Rotation

Sandbox-Schlüssel beginnen mit dt_sbx_, Produktionsschlüssel mit dt_live_. Ein Schlüssel gehört zu einer Umgebung und einem Partner. Secrets werden einmal angezeigt – bei der Erstellung, bei der Rotation und über den Abruflink – und bei uns gehasht gespeichert.

Rotieren Sie im Entwicklerportal: Eine neue Schlüssel-ID und ein neues Secret werden ausgestellt, während der alte Schlüssel für die von Ihnen gewählte Übergangsfrist (bis zu sieben Tage) weiter funktioniert, sodass Sie ohne Ausfallzeit umstellen können. Ein Widerruf wirkt sofort.

IP-Zulassungsliste

Optional können Sie jede Umgebung im Entwicklerportal auf eine Reihe von IPv4/IPv6-Adressen oder CIDR-Bereichen festlegen. Anfragen von jeder anderen Adresse werden mit 403 api_ip_not_allowed abgelehnt, auch wenn sie korrekt signiert sind. Lassen Sie die Liste leer, um jede Herkunft zu akzeptieren.