Безпека
Автентифікація API
BroSettlement використовує асиметричні Ed25519-ключі: backend підписує запит приватним ключем, а BroSettlement перевіряє його зареєстрованим публічним ключем.
Обов’язкові headers
| Header | Опис |
|---|---|
X-Api-Key-Id | UUID API key |
X-Api-Timestamp | Unix timestamp у секундах UTC |
X-Api-Nonce | Унікальний nonce для replay protection |
X-Api-Signature | Стандартний padded Base64 Ed25519 signature |
X-Api-Body-Hash | Lowercase SHA-256 hex точних body bytes; потрібен для задокументованих mutations |
Payload підпису
text
METHOD
EXACT_REQUEST_TARGET
BODY_HASH
TIMESTAMP
NONCE
API_KEY_IDEXACT_REQUEST_TARGET — raw path і query точно у відправленому вигляді. Для request без body bytes третій рядок залишається порожнім. Для body request обчисліть hash точних raw bytes.
Засоби захисту
- Ed25519 API authentication.
- Secrets manager або HSM-backed service для приватних ключів.
- Ротація ключів, IP allowlist та унікальні nonces.
- Допустиме вікно timestamp.
- Обов’язкова 2FA для людей-користувачів.
Приклад запиту
text
GET
/api/v1/assets?chain=tron%3Anile
1785402000
8f7b8f24-4e6a-45d2-a944-4b11c4c7d2f8
11111111-2222-4333-8444-555555555555Порожній третій рядок означає відсутній body. Підпишіть точний текст, а потім передайте ті самі timestamp, nonce і key ID у headers.
Типові помилки
| Помилка | Причина | Виправлення |
|---|---|---|
INVALID_SIGNATURE | Підпис не відповідає canonical request | Збережіть точний request target і body bytes |
CLOCK_SKEW або INVALID_TIMESTAMP | Timestamp некоректний або поза допустимим вікном | Синхронізуйте час через NTP |
REPLAY_DETECTED | Nonce вже використано | Генеруйте унікальний nonce для кожного request |
BODY_HASH_MISMATCH | Header hash відрізняється від отриманого body | Обчислюйте hash точних serialized bytes |
IP_NOT_ALLOWED | IP відсутній в allowlist | Оновіть IP allowlist ключа |
INSUFFICIENT_SCOPE | API key не має необхідного scope | Надайте мінімально необхідний scope |