Generera autentiseringssträngar (REST API)

Senast uppdaterad: 31 mars 2025

Vissa REST-slutpunkter tillåter känsliga operationer som att lägga order eller begära ett uttag av digitala tillgångar. Dessa privata slutpunkter kan därför endast anropas via krypterade förfrågningar, och en autentiseringssträng (authent) måste inkluderas i varje sådan förfrågan. authent beräknas från följande indata:

PostData

postData är en "&"-konkatenering i formen <argument>=<value> och är specifik för varje REST-slutpunkt.

Exempel

För att använda slutpunkten orderbook väljer du argumentet symbol med värdet
fi_xbtusd_180615. postData ges då av symbol=fi_xbtusd_180615.

Uppdatering av autentiseringsflödet för v3-slutpunkter: Från och med den 20 februari 2024, för att anpassa oss till bästa praxis och säkerställa en högre säkerhetsstandard, kommer vi att uppdatera autentiseringsflödet för våra /derivatives/* (v3) slutpunkter. (detaljer nedan)

Ändringar i PostData-generering:


- Före lansering: Användare var tvungna att hasha frågesträngsparametrar före URL-kodning för Authent-generering, t.ex. `greeting=hello world`.


- Efter lansering: Autentiseringsprocessen kommer nu att kräva hashing av den fullständiga, URL-kodade URI-komponenten som den visas i förfrågan, t.ex. `greeting=hello%20world`. Denna metod förbättrar säkerheten och överensstämmer med bästa praxis.
Denna uppdatering är särskilt relevant för v3 batchorder-slutpunkten, som accepterar en JSON-kropp i sina frågeparametrar.


Bakåtkompatibilitet och framtidsplaner:


För närvarande är denna ändring bakåtkompatibel. Plattformen kommer att acceptera båda PostData-genereringsmetoderna som beskrivs ovan. Vi strävar dock efter att fasa ut den gamla metoden (hashing av avkodade frågesträngsparametrar) i framtiden för att upprätthålla de högsta säkerhetsstandarderna. Vi kommer att ge god tid i förväg inför denna ändring och uppmuntrar starkt alla användare att övergå till den nya metoden så snart som möjligt för att säkerställa en sömlös tjänstekontinuitet.

Nonce

nonce är en kontinuerligt ökande heltalsparameter. Ett bra nonce är din systemtid i
millisekunder (i strängformat). Vårt system tolererar nonces som är i fel ordning under en kort tidsperiod. Nonce krävs inte.

Exempel 1415957147987

Många autentiseringsproblem är relaterade till felaktig nonce. Ett nytt par API-nycklar kommer automatiskt att återställa nonce och lösa dessa problem.

Slutpunktsväg

endpointPath Detta är URL-tillägget för slutpunkten.

Exempel /api/v3/orderbook

API-hemlighet

api_secret erhålls enligt beskrivningen i föregående avsnitt.

Exempel

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

Baserat på dessa indata måste authent beräknas enligt följande:

  1. 1

    Sammanfoga

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Hasha resultatet av steg 1 med SHA-256-algoritmen

  3. 3

    Base64-avkoda din api_secret

  4. 4

    Använd resultatet av steg 3 för att hasha resultatet av steg 2 med HMAC-SHA-512-algoritmen

  5. 5

    Base64-koda resultatet av steg 4

Exempel

Följande visar en implementering av authent i Java. För fullständiga fungerande exempel på olika programmeringsspråk, se avsnittet Ytterligare resurser. 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();
}

Behöver du mer hjälp?