Xác thực
Hai cách xác thực, đều gắn với ID khóa của bạn: yêu cầu được ký (khuyến nghị) hoặc bearer token theo OAuth 2 client-credentials.
- Yêu cầu được ký (HMAC-SHA256)
- OAuth 2 client credentials
- ID khóa, secret và xoay vòng
- Danh sách IP được phép
Yêu cầu được ký (HMAC-SHA256)
Gửi X-API-Key, X-Timestamp, X-Nonce và X-Signature trong mọi lệnh gọi. Chữ ký bao gồm phương thức, đích yêu cầu chính xác (đường dẫn và query), timestamp, nonce và giá trị băm của nội dung, nên một yêu cầu bị phát lại hoặc bị sửa đổi sẽ không vượt qua xác minh. Độ lệch đồng hồ tối đa năm phút được chấp nhận; dùng lại một nonce trong vòng mười phút sẽ bị từ chối với 401 api_nonce_reused.
Tính chữ ký trên chính các byte thô bạn gửi đi. Tuần tự hóa JSON một lần, băm đúng các byte đó và gửi đúng các byte đó làm nội dung — tuần tự hóa lại sau khi ký là nguyên nhân phổ biến nhất gây ra 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
Nếu việc ký từng yêu cầu không phù hợp với stack của bạn, hãy đổi ID khóa và secret lấy một bearer token ngắn hạn tại POST /v1/oauth/token (grant_type=client_credentials, mã hóa dạng form). Token có hiệu lực 30 phút và mang các phạm vi quyền đã cấp cho bạn; bạn có thể yêu cầu một tập con bằng tham số scope.
Gửi token dưới dạng Authorization: Bearer cùng với X-API-Key trong mọi lệnh gọi. ID khóa được kiểm tra lại ở mỗi yêu cầu, nên việc thu hồi một khóa sẽ vô hiệu hóa các token của nó ngay lập tức.
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETID khóa, secret và xoay vòng
Khóa sandbox bắt đầu bằng dt_sbx_, khóa production bằng dt_live_. Mỗi khóa thuộc về một môi trường và một đối tác. Secret chỉ hiển thị một lần — khi tạo, khi xoay vòng và qua đường liên kết hiển thị — và được lưu dưới dạng băm ở phía chúng tôi.
Xoay vòng từ cổng nhà phát triển: một ID khóa và secret mới được cấp trong khi khóa cũ vẫn hoạt động trong thời gian ân hạn bạn chọn (tối đa bảy ngày), để bạn chuyển đổi mà không bị gián đoạn. Việc thu hồi có hiệu lực ngay lập tức.
Danh sách IP được phép
Tùy chọn giới hạn mỗi môi trường vào một tập địa chỉ IPv4/IPv6 hoặc dải CIDR trong cổng nhà phát triển. Yêu cầu từ bất kỳ địa chỉ nào khác sẽ bị từ chối với 403 api_ip_not_allowed ngay cả khi được ký đúng. Để trống danh sách để chấp nhận mọi nguồn.