Mentions légales obligatoires: Monnaie virtuelle, risques réels. En crypto seul le risque est garanti. Plus

Générer des chaînes d'authentification (API REST)

Dernière mise à jour : 7 octobre 2026

Certains points de terminaison REST permettent d'effectuer des opérations sensibles, comme le passage d'ordres ou la demande de retrait d'actifs numériques. Ces points de terminaison privés ne peuvent être appelés que via des requêtes chiffrées ; une chaîne d'authentification (authent) doit être incluse dans chacune d'elles. authent est calculé à partir des entrées suivantes :

PostData

postData est une concaténation "&" de la forme =, propre à chaque point de terminaison REST.

Exemple

Pour utiliser le point de terminaison orderbook, choisissez l'argument symbol avec la valeur
fi_xbtusd_180615. postData est alors défini par symbol=fi_xbtusd_180615.

Mise à jour du flux d'authentification pour les points de terminaison v3 : à compter du 20 février 2024, afin de nous conformer aux meilleures pratiques et de garantir un niveau de sécurité plus élevé, nous allons mettre à jour le flux d'authentification de nos points de terminaison /derivatives/* (v3). (détails ci-dessous)

Modifications de la génération de PostData :


- Avant la mise à jour : les utilisateurs devaient hacher les paramètres de la chaîne de requête avant l'encodage URL pour générer l'Authent, par exemple `greeting=hello world`.


- Après la mise à jour : le processus d'authentification requiert désormais le hachage du composant URI complet et encodé en URL, tel qu'il apparaît dans la demande, par exemple `greeting=hello%20world`. Cette méthode renforce la sécurité et respecte les meilleures pratiques.
Cette mise à jour concerne particulièrement le point de terminaison v3 batchorder, qui accepte un corps JSON dans ses paramètres de requête.


Rétrocompatibilité et perspectives :


Pour l'heure, cette modification est rétrocompatible. La plateforme acceptera les deux méthodes de génération de PostData décrites ci-dessus. Nous prévoyons toutefois d'abandonner l'ancienne méthode (hachage des paramètres de requête décodés) à terme, afin de maintenir les normes de sécurité les plus élevées. Nous vous en informerons suffisamment à l'avance et encourageons vivement tous les utilisateurs à adopter la nouvelle méthode dès que possible pour garantir la continuité du service.

Nonce

nonce est un paramètre entier en incrémentation continue. Un bon nonce correspond à l'heure système en
millisecondes (au format chaîne). Notre système tolère des nonces hors séquence pendant une brève période. Le nonce n'est pas obligatoire.

Exemple 1415957147987

De nombreux problèmes d'authentification sont liés à un nonce incorrect. La création d'une nouvelle paire de clés API réinitialisera automatiquement le nonce et résoudra ces problèmes.

Chemin du point de terminaison

endpointPath correspond à l'extension URL du point de terminaison.

Exemple /api/v3/orderbook

API Secret

L'api_secret est obtenu comme décrit dans la section précédente.

Exemple

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

À partir de ces entrées, authent est calculé comme suit :

  1. 1

    Concaténez

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Hachez le résultat de l'étape 1 avec l'algorithme SHA-256

  3. 3

    Décodez en Base64 votre api_secret

  4. 4

    Utilisez le résultat de l'étape 3 pour hacher le résultat de l'étape 2 avec l'algorithme HMAC-SHA-512

  5. 5

    Encodez en Base64 le résultat de l'étape 4

Exemple

L'exemple suivant illustre une implémentation de authent en Java. Pour des exemples complets dans différents langages de programmation, consultez la section Ressources supplémentaires. 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();
}