Agent SDK Секреты и HMAC подписание
Защитите учетные данные агента API и поймите, как SDK генерирует устойчивые к воспроизведению подписи запросов HMAC-SHA256.
Запросы Agent SDK аутентифицируются с помощью секрета партнера API. Храните этот секрет в доверенной внутренней службе и позволяйте SDK генерировать поля подписи, когда это возможно.
Два протокола подписания
При подписании Agent SDK используются отсортированные поля запроса, временная метка в секундах и одноразовый номер. Прямые запросы Developer API используют отдельный процесс, описанный в разделе Запрос на подписание. Не используйте повторно один формат полезной нагрузки для другого.
Правило подписи
Для запросов Agent SDK:
- Исключите поле
sign. - Пропускать поля с пустыми значениями.
- Отсортируйте оставшиеся имена полей в порядке ASCII.
- Объедините поля как
k=v&k2=v2. - Вычислите шестнадцатеричную подпись HMAC-SHA256 с помощью
apiSecret.
Значения массива сериализуются как компактные JSON перед присоединением к подписывающим полезным данным. Например, platformUserIds обозначается как ["1188041528"], что дает platformUserIds=["1188041528"] в полезных данных k=v . Сохранять порядок элементов массива, двойные кавычки и идентификаторы строк; не вставляйте пробелы форматирования и не используйте Java List.toString() (например, [1188041528]). SDK автоматически обрабатывает эту сериализацию.
SDK должен построить это значение на основе тех же данных, которые он отправляет. Изменение подписанного поля после создания подписи приводит к сбою проверки.
Поля, управляемые SDK
Секретное хранилище
- Загрузите
apiSecretиз внутреннего секретного менеджера или защищенной конфигурации среды выполнения. - Никогда не размещайте секрет в пакетах внешнего интерфейса, мобильных приложениях, клиентах для настольных компьютеров, скриншотах или обращениях в службу поддержки.
- Храните учетные данные для разработки, подготовки и производства отдельно.
- Ограничьте доступ к сервисам и операторам, которые этого требуют.
- Редактировать подписи запросов, значения авторизации и секреты из журналов.
- Отозвать и заменить учетные данные при подозрении на заражение.
Защита часов и повторов
SDK включает timestamp и nonce для снижения риска повторного воспроизведения. Синхронизируйте внутренние часы и не используйте повторно созданный вручную одноразовый номер. Если проверка подписи не удалась, перед повторной попыткой подтвердите настроенный секрет, время сервера, сериализованные поля и среду.