Generování ověřovacích řetězců (REST API)

Naposledy aktualizováno: 31. března 2025

Některé koncové body REST umožňují provádět citlivé operace, jako je zadávání objednávek nebo žádost o výběr digitálního aktiva. Tyto soukromé koncové body lze proto volat pouze prostřednictvím šifrovaných požadavků a v každém takovém požadavku musí být zahrnut ověřovací řetězec (authent). Authent se vypočítá z následujících vstupů:

PostData

postData je zřetězení "&" ve formátu <argument>=<value> a je specifické pro každý koncový bod REST.

Příklad

Pro provoz koncového bodu orderbook zvolíte argument symbol s hodnotou
fi_xbtusd_180615. postData je pak dáno symbol=fi_xbtusd_180615.

Aktualizace toku ověřování pro koncové body v3: Od 20. února 2024, v souladu s osvědčenými postupy a pro zajištění vyššího bezpečnostního standardu, aktualizujeme tok ověřování pro naše koncové body /derivatives/* (v3). (podrobnosti níže)

Změny v generování PostData:


- Před vydáním: Uživatelé museli hashovat parametry řetězce dotazu před kódováním URL pro generování Authent, např. `greeting=hello world`.


- Po vydání: Proces ověřování nyní bude vyžadovat hashování celé, URL-kódované komponenty URI, jak se objevuje v požadavku, např. `greeting=hello%20world`. Tato metoda zvyšuje bezpečnost a je v souladu s osvědčenými postupy.
Tato aktualizace je zvláště relevantní pro koncový bod v3 batchorder, který přijímá tělo JSON ve svých parametrech dotazu.


Zpětná kompatibilita a budoucí plány:


Prozatím je tato změna zpětně kompatibilní. Platforma bude akceptovat obě výše popsané metody generování PostData. Naším cílem je však v budoucnu postupně vyřadit starou metodu (hashování dekódovaných parametrů řetězce dotazu), abychom udrželi nejvyšší bezpečnostní standardy. O této změně budeme včas informovat a důrazně doporučujeme všem uživatelům přejít na novou metodu co nejdříve, aby byla zajištěna nepřetržitá služba.

Nonce

nonce je průběžně se zvyšující celočíselný parametr. Dobrý nonce je váš systémový čas v
milisekundách (ve formátu řetězce). Náš systém toleruje nonces, které jsou krátkodobě mimo pořadí. Nonce není vyžadován.

Příklad 1415957147987

Mnoho problémů s ověřováním souvisí s nesprávným nonce. Nový pár API klíčů automaticky resetuje nonce a vyřeší tyto problémy.

Cesta koncového bodu

endpointPath Toto je rozšíření URL koncového bodu.

Příklad /api/v3/orderbook

API Secret

api_secret se získá, jak je popsáno v předchozí sekci.

Příklad

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

Na základě těchto vstupů je třeba authent vypočítat následovně:

  1. 1

    Zřetězte

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Výsledek kroku 1 zahashujte pomocí algoritmu SHA-256

  3. 3

    Base64-dekódujte svůj api_secret

  4. 4

    Použijte výsledek kroku 3 k zahashování výsledku kroku 2 pomocí algoritmu HMAC-SHA-512

  5. 5

    Base64-zakódujte výsledek kroku 4

Příklad

Následuje implementace authent v Javě. Úplné funkční příklady v různých programovacích jazycích naleznete v sekci Další zdroje. 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();
}

Potřebujete další pomoc?