Hitelesítési karakterláncok generálása (REST API)

Utolsó frissítés: 2025. március 31.

Egyes REST végpontok érzékeny műveletek végrehajtását teszik lehetővé, mint például megbízások leadása vagy digitális eszköz kivonásának kérése. Ezek a privát végpontok ezért csak titkosított kéréseken keresztül hívhatók meg, és minden ilyen kérésnek tartalmaznia kell egy hitelesítési karakterláncot (authent). Az authent a következő bemenetekből számítódik:

PostData

A postData egy "&" összefűzés <argumentum>=<érték> formában, és minden REST végpontra specifikus.

Példa

Az endpoint orderbook működtetéséhez válassza a symbol argumentumot a fi_xbtusd_180615 értékkel.
A postData ekkor a symbol=fi_xbtusd_180615.

Hitelesítési folyamat frissítése a v3 végpontokhoz: 2024. február 20-tól, a legjobb gyakorlatokhoz való igazodás és a magasabb biztonsági szabvány biztosítása érdekében frissítjük a hitelesítési folyamatot a /derivatives/* (v3) végpontjainkhoz. (részletek alább)

PostData generálási változások:


- Kiadás előtt: A felhasználóknak a url-kódolás előtt hash-elniük kellett a lekérdezési karakterlánc paramétereit az Authent generálásához, pl. `greeting=hello world`.


- Kiadás után: A hitelesítési folyamat mostantól megköveteli a teljes, url-kódolt URI komponens hash-elését, ahogyan az a kérésben megjelenik, pl. `greeting=hello%20world`. Ez a módszer növeli a biztonságot és összhangban van a legjobb gyakorlatokkal.
Ez a frissítés különösen releváns a v3 batchorder végpont esetében, amely JSON törzset fogad el a lekérdezési paramétereiben.


Visszafelé kompatibilitás és jövőbeli tervek:


Egyelőre ez a változás visszafelé kompatibilis. A platform elfogadja mindkét fent leírt PostData generálási módszert. Azonban a jövőben fokozatosan megszüntetjük a régi módszert (a dekódolt lekérdezési karakterlánc paraméterek hash-elését) a legmagasabb biztonsági szabványok fenntartása érdekében. E változás előtt elegendő értesítést fogunk küldeni, és erősen javasoljuk minden felhasználónak, hogy a lehető leghamarabb térjen át az új módszerre a zökkenőmentes szolgáltatásfolytonosság biztosítása érdekében.

Nonce

A nonce egy folyamatosan növekvő egész szám paraméter. Egy jó nonce a rendszeridő ezredmásodpercben (karakterlánc formátumban). Rendszerünk rövid ideig tolerálja a sorrenden kívüli nonce-okat. A nonce nem kötelező.

Példa: 1415957147987

Sok hitelesítési probléma a helytelen nonce-hoz kapcsolódik. Egy új API kulcspár automatikusan visszaállítja a nonce-ot és megoldja ezeket a problémákat.

Végpont útvonal

endpointPath Ez a végpont URL kiterjesztése.

Példa: /api/v3/orderbook

API titok

Az api_secret az előző szakaszban leírtak szerint szerezhető be.

Példa

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

Ezen bemenetek alapján az authent-et a következőképpen kell kiszámítani:

  1. 1

    Fűzze össze

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Hash-elje az 1. lépés eredményét a SHA-256 algoritmussal

  3. 3

    Base64-dekódolja az api_secret-jét

  4. 4

    A 3. lépés eredményét használja a 2. lépés eredményének hash-elésére a HMAC-SHA-512 algoritmussal

  5. 5

    Base64-kódolja a 4. lépés eredményét

Példa

Az alábbiakban az authent Java nyelven történő implementációja látható. A különböző programozási nyelveken írt teljes, működő példákért lásd a További források című szakaszt. 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();
}

További segítségre van szükséged?