Generer autentificeringsstrenge (REST API)

Sidst opdateret: 31. marts 2025

Nogle REST-slutpunkter tillader udførelse af følsomme handlinger såsom at placere ordrer eller anmode om en udbetaling af digitale aktiver. Disse private slutpunkter kan derfor kun kaldes via krypterede anmodninger, og en autentificeringsstreng (authent) skal inkluderes i hver sådan anmodning. authent beregnes ud fra følgende input:

PostData

postData er en "&"-sammenkædning i formen = og er specifik for hvert REST-slutpunkt.

Eksempel

For at betjene slutpunktet orderbook vælger du argumentet symbol med værdien
fi_xbtusd_180615. postData er derefter givet ved symbol=fi_xbtusd_180615.

Opdatering af autentificeringsflow for v3-slutpunkter: Fra den 20. februar 2024, for at tilpasse os bedste praksis og sikre en højere sikkerhedsstandard, vil vi opdatere autentificeringsflowet for vores /derivatives/* (v3) slutpunkter. (detaljer nedenfor)

Ændringer i PostData-generering:


- Før udgivelse: Brugere skulle hashe forespørgselsstrengparametre før URL-kodning til Authent-generering, f.eks. `greeting=hello world`.


- Efter udgivelse: Autentificeringsprocessen vil nu kræve hashing af den fulde, URL-kodede URI-komponent, som den vises i anmodningen, f.eks. `greeting=hello%20world`. Denne metode forbedrer sikkerheden og stemmer overens med bedste praksis.
Denne opdatering er især relevant for v3 batchorder-slutpunktet, som accepterer en JSON-body i sine forespørgselsparametre.


Bagudkompatibilitet og fremtidige planer:


Foreløbig er denne ændring bagudkompatibel. Platformen vil acceptere begge PostData-genereringsmetoder beskrevet ovenfor. Vi sigter dog mod at udfase den gamle metode (hashing af afkodede forespørgselsstrengparametre) i fremtiden for at opretholde de højeste sikkerhedsstandarder. Vi vil give rigelig varsel forud for denne ændring og opfordrer kraftigt alle brugere til at overgå til den nye metode så hurtigt som muligt for at sikre problemfri servicekontinuitet.

Nonce

nonce er en kontinuerligt stigende heltalsparameter. En god nonce er din systemtid i
millisekunder (i strengformat). Vores system tolererer nonces, der er ude af rækkefølge i en kort periode. Nonce er ikke påkrævet.

Eksempel 1415957147987

Mange autentificeringsproblemer er relateret til forkert nonce. Et nyt par API-nøgler vil automatisk nulstille nonce og løse disse problemer.

Slutpunktsti

endpointPath Dette er URL-udvidelsen af slutpunktet.

Eksempel /api/v3/orderbook

API-hemmelighed

api_secret opnås som beskrevet i det foregående afsnit.

Eksempel

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

Baseret på disse input skal authent beregnes som følger:

  1. 1

    Sammenkæd

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Hash resultatet af trin 1 med SHA-256-algoritmen

  3. 3

    Base64-afkod din api_secret

  4. 4

    Brug resultatet af trin 3 til at hashe resultatet af trin 2 med HMAC-SHA-512-algoritmen

  5. 5

    Base64-kod resultatet af trin 4

Eksempel

Følgende viser en implementering af authent i Java. For fulde, fungerende eksempler på forskellige programmeringssprog, se afsnittet Yderligere ressourcer. 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();
}

Har du brug for mere hjælp?