สร้าง authentication strings (REST API)

อัปเดตล่าสุด: 31 มีนาคม 2568

REST endpoints บางรายการอนุญาตให้ดำเนินการที่ละเอียดอ่อน เช่น การส่งคำสั่งซื้อขาย หรือการขอถอนสินทรัพย์ดิจิทัล ดังนั้น private endpoints เหล่านี้จึงสามารถเรียกใช้ได้ผ่านคำขอที่เข้ารหัสเท่านั้น และต้องมี authentication string (authent) รวมอยู่ในคำขอแต่ละรายการ authent คำนวณจากข้อมูลต่อไปนี้:

PostData

postData คือการเชื่อมต่อแบบ "&" ในรูปแบบ <argument>=<value> และเป็นข้อมูลเฉพาะสำหรับ REST endpoint แต่ละรายการ

ตัวอย่าง

ในการดำเนินการ endpoint orderbook คุณเลือก argument symbol ที่มีค่า
fi_xbtusd_180615. จากนั้น postData จะกำหนดโดย symbol=fi_xbtusd_180615.

อัปเดต Authentication Flow สำหรับ v3 endpoints: ตั้งแต่วันที่ 20 กุมภาพันธ์ 2024 เพื่อให้สอดคล้องกับแนวทางปฏิบัติที่ดีที่สุดและรับประกันมาตรฐานความปลอดภัยที่สูงขึ้น เราจะอัปเดต Authentication Flow สำหรับ /derivatives/* (v3) endpoints ของเรา (รายละเอียดด้านล่าง)

การเปลี่ยนแปลงการสร้าง PostData:


- ก่อนการเปิดตัว: ผู้ใช้จำเป็นต้อง hash query string parameters ก่อน url-encoding สำหรับการสร้าง Authent เช่น `greeting=hello world`


- หลังการเปิดตัว: กระบวนการ authentication จะต้อง hash URI component ที่ url-encoded เต็มรูปแบบตามที่ปรากฏในคำขอ เช่น `greeting=hello%20world` วิธีนี้ช่วยเพิ่มความปลอดภัยและสอดคล้องกับแนวทางปฏิบัติที่ดีที่สุด
การอัปเดตนี้เกี่ยวข้องโดยเฉพาะกับ v3 batchorder endpoint ซึ่งยอมรับ JSON body ใน query parameters


Backward Compatibility และแผนในอนาคต:


สำหรับตอนนี้ การเปลี่ยนแปลงนี้ยังคง Backward Compatible แพลตฟอร์มจะยอมรับวิธีการสร้าง PostData ทั้งสองแบบที่อธิบายไว้ข้างต้น อย่างไรก็ตาม เราตั้งเป้าที่จะยกเลิกวิธีการเก่า (hashing decoded query string parameters) ในอนาคตเพื่อรักษาสูงสุดมาตรฐานความปลอดภัย เราจะแจ้งให้ทราบล่วงหน้าเกี่ยวกับการเปลี่ยนแปลงนี้และขอแนะนำให้ผู้ใช้ทุกคนเปลี่ยนไปใช้วิธีการใหม่โดยเร็วที่สุดเพื่อให้มั่นใจถึงความต่อเนื่องของบริการที่ราบรื่น

Nonce

nonce เป็นพารามิเตอร์จำนวนเต็มที่เพิ่มขึ้นอย่างต่อเนื่อง nonce ที่ดีคือเวลาของระบบของคุณใน
มิลลิวินาที (ในรูปแบบ string) ระบบของเรายอมรับ nonces ที่ไม่อยู่ในลำดับเป็นระยะเวลาสั้นๆ ไม่จำเป็นต้องมี Nonce

ตัวอย่าง 1415957147987

ปัญหา authentication จำนวนมากเกี่ยวข้องกับ nonce ที่ไม่ถูกต้อง API keys คู่ใหม่จะรีเซ็ต nonce โดยอัตโนมัติและแก้ไขปัญหาเหล่านี้

Endpoint Path

endpointPath นี่คือส่วนขยาย URL ของ endpoint

ตัวอย่าง /api/v3/orderbook

API Secret

api_secret ได้รับตามที่อธิบายไว้ในส่วนก่อนหน้า

ตัวอย่าง

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

จากข้อมูลเหล่านี้ authent จะต้องคำนวณดังนี้:

  1. 1

    เชื่อมต่อ

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Hash ผลลัพธ์ของขั้นตอนที่ 1 ด้วย SHA-256 algorithm

  3. 3

    Base64-decode api_secret ของคุณ

  4. 4

    ใช้ผลลัพธ์ของขั้นตอนที่ 3 เพื่อ hash ผลลัพธ์ของขั้นตอนที่ 2 ด้วย HMAC-SHA-512 algorithm

  5. 5

    Base64-encode ผลลัพธ์ของขั้นตอนที่ 4

ตัวอย่าง

ต่อไปนี้แสดงการใช้งาน authent ใน Java สำหรับตัวอย่างการทำงานที่สมบูรณ์ในภาษา programming languages ต่างๆ โปรดดูส่วน Additional Resources. 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();
}

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่