Генерація рядків автентифікації (REST API)

Останнє оновлення: 7 жовтня 2026 р.

Деякі кінцеві точки REST дозволяють виконувати чутливі операції, наприклад розміщення ордерів або запит на виведення цифрових активів. Ці приватні кінцеві точки можна викликати лише через зашифровані запити, і кожен такий запит повинен містити рядок автентифікації (authent). authent обчислюється на основі таких вхідних даних:

PostData

postData — це конкатенація через «&» у форматі = і є специфічним для кожної кінцевої точки REST.

Наприклад

Щоб викликати кінцеву точку orderbook, Ви обираєте аргумент symbol зі значенням
fi_xbtusd_180615. У такому разі postData матиме вигляд symbol=fi_xbtusd_180615.

Оновлення процесу автентифікації для кінцевих точок v3: з 20 лютого 2024 року, відповідно до найкращих практик і задля підвищення стандартів безпеки, ми оновлюємо процес автентифікації для наших кінцевих точок /derivatives/* (v3). (деталі нижче)

Зміни у формуванні PostData:


- До оновлення: клієнти мали хешувати параметри рядка запиту до їхнього url-кодування для генерації Authent, наприклад `greeting=hello world`.


- Після оновлення: процес автентифікації тепер вимагатиме хешування повного url-кодованого компонента URI у тому вигляді, в якому він надходить у запиті, наприклад `greeting=hello%20world`. Цей метод підвищує безпеку та відповідає найкращим практикам.
Це оновлення особливо важливе для кінцевої точки v3 batchorder, яка приймає тіло JSON у своїх параметрах запиту.


Зворотна сумісність і плани на майбутнє:


Наразі ця зміна є зворотно сумісною. Платформа прийматиме обидва описані вище методи формування PostData. Однак у майбутньому ми плануємо відмовитись від старого методу (хешування декодованих параметрів рядка запиту) задля підтримання найвищих стандартів безпеки. Ми завчасно повідомимо про цю зміну і наполегливо рекомендуємо всім клієнтам якомога швидше перейти на новий метод, щоб забезпечити безперебійну роботу.

Nonce

nonce — це цілочисельний параметр, що безперервно збільшується. Оптимальним значенням nonce є поточний системний час у
мілісекундах (у форматі рядка). Наша система допускає короткочасне надходження nonce не за порядком. nonce не є обовʼязковим.

Приклад 1415957147987

Багато проблем з автентифікацією повʼязані з некоректним nonce. Створення нової пари ключів API автоматично скине nonce і усуне ці проблеми.

Шлях до кінцевої точки

endpointPath — це URL-розширення кінцевої точки.

Приклад /api/v3/orderbook

Секрет API

api_secret можна отримати так, як описано в попередньому розділі.

Наприклад

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

На основі цих вхідних даних authent обчислюється таким чином:

  1. 1

    Конкатенуйте

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    Захешуйте результат кроку 1 за допомогою алгоритму SHA-256

  3. 3

    Декодуйте Base64 свій api_secret

  4. 4

    Використайте результат кроку 3, щоб захешувати результат кроку 2 за допомогою алгоритму HMAC-SHA-512

  5. 5

    Закодуйте в Base64 результат кроку 4

Наприклад

Нижче наведено реалізацію authent на Java. Повні робочі приклади різними мовами програмування див. у розділі Додаткові ресурси. 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();
}