Tạo chuỗi xác thực (REST API)

Cập nhật lần cuối: 31 thg 3, 2025

Một số điểm cuối REST cho phép thực hiện các thao tác nhạy cảm như đặt lệnh hoặc yêu cầu rút tài sản kỹ thuật số. Do đó, các điểm cuối riêng tư này chỉ có thể được gọi thông qua các yêu cầu được mã hóa và một chuỗi xác thực (authent) phải được bao gồm trong mỗi yêu cầu đó. authent được tính toán từ các đầu vào sau:

PostData

postData là một chuỗi nối "&" dưới dạng <argument>=<value> và dành riêng cho từng điểm cuối REST.

Ví dụ

Để vận hành điểm cuối sổ lệnh, bạn chọn đối số symbol với giá trị
fi_xbtusd_180615. postData sau đó được cung cấp bởi symbol=fi_xbtusd_180615.

Cập nhật Luồng xác thực cho các điểm cuối v3: Kể từ ngày 20 tháng 2 năm 2024, để phù hợp với các phương pháp hay nhất và đảm bảo tiêu chuẩn bảo mật cao hơn, chúng tôi sẽ cập nhật luồng xác thực cho các điểm cuối /derivatives/* (v3) của chúng tôi. (chi tiết bên dưới)

Thay đổi trong việc tạo PostData:


- Trước khi phát hành: Người dùng được yêu cầu băm các tham số chuỗi truy vấn trước khi mã hóa URL để tạo Authent, ví dụ: `greeting=hello world`.


- Sau khi phát hành: Quá trình xác thực giờ đây sẽ yêu cầu băm toàn bộ thành phần URI đã được mã hóa URL như nó xuất hiện trong yêu cầu, ví dụ: `greeting=hello%20world`. Phương pháp này tăng cường bảo mật và phù hợp với các phương pháp hay nhất.
Bản cập nhật này đặc biệt liên quan đến điểm cuối batchorder v3, chấp nhận một phần thân JSON trong các tham số truy vấn của nó.


Khả năng tương thích ngược và Kế hoạch tương lai:


Hiện tại, thay đổi này tương thích ngược. Nền tảng sẽ chấp nhận cả hai phương pháp tạo PostData được mô tả ở trên. Tuy nhiên, chúng tôi đặt mục tiêu loại bỏ phương pháp cũ (băm các tham số chuỗi truy vấn đã giải mã) trong tương lai để duy trì các tiêu chuẩn bảo mật cao nhất. Chúng tôi sẽ thông báo trước về thay đổi này và khuyến khích mạnh mẽ tất cả người dùng chuyển sang phương pháp mới càng sớm càng tốt để đảm bảo dịch vụ liên tục.

Nonce

nonce là một tham số số nguyên tăng liên tục. Một nonce tốt là thời gian hệ thống của bạn tính bằng
mili giây (ở định dạng chuỗi). Hệ thống của chúng tôi chấp nhận các nonce không theo thứ tự trong một khoảng thời gian ngắn. Nonce không bắt buộc.

Ví dụ 1415957147987

Nhiều vấn đề xác thực liên quan đến nonce không chính xác. Một cặp khóa API mới sẽ tự động đặt lại nonce và giải quyết các vấn đề này.

Đường dẫn điểm cuối

endpointPath Đây là phần mở rộng URL của điểm cuối.

Ví dụ /api/v3/orderbook

Khóa bí mật API

api_secret được lấy như mô tả trong phần trước.

Ví dụ

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

Dựa trên các thông tin đầu vào này, authent cần được tính toán như sau:

  1. 1

    Nối

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Băm kết quả của bước 1 bằng thuật toán SHA-256

  3. 3

    Giải mã Base64 api_secret của bạn

  4. 4

    Sử dụng kết quả của bước 3 để băm kết quả của bước 2 bằng thuật toán HMAC-SHA-512

  5. 5

    Mã hóa Base64 kết quả của bước 4

Ví dụ

Sau đây là ví dụ triển khai authent trong Java. Để xem các ví dụ đầy đủ trong các ngôn ngữ lập trình khác nhau, hãy xem Mục Tài nguyên bổ sung. public static String getAuthent(String postData, String nonce, String endpointPath, String secretKeyBase64)
{
Mac mac512;
MessageDigest sha256;
try {
SecretKey secretKey = new SecretKeySpec 
(Base64.decode(secretKeyBase64.getBytes()), HMAC_SHA_512);
mac512 = Mac.getInstance(HMAC_SHA_512);
mac512.init(secretKey);
sha256 = MessageDigest.getInstance("SHA-256");
} catch (IOException e) {
...
} catch (InvalidKeyException e) {
...
} catch (NoSuchAlgorithmException e) {
...
} sha256.update(postData.getBytes());
sha256.update(nonce.getBytes());
sha256.update(endpointPath.getBytes());
mac512.update(sha256.digest());
return Base64.encodeBytes(mac512.doFinal()).trim();
}

Bạn cần thêm trợ giúp?