Skip to navigation

Agent SDK Секрети та HMAC Підпис

Захистіть облікові дані агента API і зрозумійте, як SDK генерує підписи запитів HMAC-SHA256 із міткою часу, стійкі до повторного відтворення.

View as Markdown

Agent SDK запити автентифікуються за допомогою партнерського секрету API. Зберігайте цю таємницю в надійній серверній службі та дозволяйте SDK генерувати поля підпису, коли це можливо.

Два протоколи підписання

Підписання Agent SDK використовує відсортовані поля запиту, мітку часу на основі секунд і одноразовий номер. Прямі Developer API запити використовують окремий процес, описаний у Підписання запиту. Не використовуйте повторно один формат корисного навантаження для іншого.

Правило підписання

Для Agent SDK запитів:

  1. Виключіть поле sign.
  2. Пропустити поля з порожніми значеннями.
  3. Відсортуйте назви решти полів у порядку ASCII.
  4. Об’єднайте поля як k=v&k2=v2.
  5. Обчисліть HMAC-SHA256 шістнадцятковий підпис за допомогою apiSecret.

Значення масиву серіалізуються як компактний JSON перед приєднанням до корисного навантаження підпису. Наприклад, platformUserIds підписується як ["1188041528"], надаючи platformUserIds=["1188041528"] у корисному навантаженні k=v. Зберігати порядок елементів масиву, подвійні лапки та ідентифікатори рядків; не вставляйте пробіли форматування та не використовуйте Java List.toString() (наприклад, [1188041528]). SDK обробляє цю серіалізацію автоматично.

SDK має створити це значення з тих самих даних, які він надсилає. Зміна підписаного поля після створення підпису спричиняє помилку підтвердження.

SDK-керовані поля

ПолеДжерелоопис
agentCodeSDK конфігКод агента партнера.
позначка часуПоточний час на серверіПозначка часу Unix у секундах.
один разБезпечне випадкове значенняВипадковий рядок із захистом від повтору.
знакHMAC-SHA256Запит на підпис.
валютаВалюта за умовчаннямВикористовується, коли переказ/рахунок APIs без валюти.

Таємне сховище

  • Завантажте apiSecret із серверного секретного менеджера або захищеної конфігурації середовища виконання.
  • Ніколи не розміщуйте секрет у пакетах інтерфейсу, мобільних програмах, настільних клієнтах, знімках екрана чи заявках у службу підтримки.
  • Зберігайте окремо облікові дані для розробки, постановки та виробництва.
  • Обмежте доступ до послуг і операторів, яким це потрібно.
  • Видаліть із журналів підписи запитів, значення авторизації та секрети.
  • Відкликайте та замінюйте облікові дані, якщо є підозра на зараження.

Захист годинника та відтворення

SDK містить timestamp і nonce для зменшення ризику повторного відтворення. Підтримуйте синхронізацію внутрішніх годинників і не використовуйте повторно створений вручну nonce. Якщо перевірка підпису не вдалася, підтвердьте налаштований секрет, час сервера, серіалізовані поля та середовище перед повторною спробою.

Контрольний список інтеграції

ПеревіртеОчікуваний результат
Секретне місце розташуванняБекенд-лише секретне сховище.
Навколишнє середовищеБаза URL і облікові дані належать до одного середовища.
Польова обробкаSDK створює timestamp, nonce і sign.
ЛісозаготівляІдентифікатори компаній залишаються видимими, а облікові дані видаляються.
ОбертанняВласник облікових даних і процес заміни задокументовані.

Відповідні документи безпеки