CRM роботы 2.0 + AI (300+ роботов)

Проверить HMAC-SHA256 подпись переданного JSON

Робот «Проверить HMAC-SHA256 подпись переданного JSON» сверяет подпись сообщения по общему секретному ключу без изменения исходной строки.

Настройки робота «Проверить HMAC-SHA256 подпись переданного JSON» в Битрикс24

Видимая часть формы настройки в Битрикс24. Скриншот показывает поля действия; он не подтверждает выполнение учебного примера.

Для кого и какую задачу решает

Администратору интеграционного процесса, который получает JSON и подпись от согласованной внешней системы и хочет проверить неизменность сообщения.

Пересборка JSON может изменить пробелы или порядок полей при тех же видимых данных. Подпись проверяется для исходной строки. Робот помогает остановить дальнейшую обработку, если переданное тело не соответствует подписи и общему ключу.

Параметры и подготовка

Поле Как заполнить
Исходный JSON без изменения пробелов (RAW_JSON) Обязательное поле
Секретный ключ Base64 (KEY_BASE64) Обязательное поле
HMAC-SHA256 подпись HEX (SIGNATURE_HEX) Обязательное поле

Перед настройкой выберите, откуда процесс получит каждое значение: постоянная настройка, поле карточки или результат предыдущего шага. Подписи в таблице соответствуют полям робота. Коды в скобках помогают различать похожие параметры при передаче данных между шагами.

Как использовать

  1. Получите исходный JSON без изменения пробелов, экранирования и переводов строк. Передайте его в RAW_JSON; допустим объект или массив.
  2. Передайте общий ключ строгой Base64-строкой в KEY_BASE64, подпись шестнадцатеричной строкой ровно из 64 символов в SIGNATURE_HEX.
  3. Не публикуйте рабочий ключ в общих шаблонах или инструкции. Источник и процесс должны использовать один согласованный ключ.
  4. Проверьте статус, затем «Подпись совпадает». При несовпадении остановите зависимые действия и сверяйте исходное тело с отправителем; не принимайте сообщение только по успешному статусу.

Как заполнить JSON-поля

Исходный JSON без изменения пробелов (RAW_JSON)

{}

Этот блок объясняет форму объекта; для проверки подписи передавайте точную исходную строку отправителя без форматирования. Допустим также JSON-массив. Пустые {} и [] являются разными подписываемыми сообщениями.

Приведён пример JSON-объекта. Для исходного документа допустимость массива [] или скалярного значения определяется выбранной операцией и схемой; этот пример не ограничивает все возможные входы объектами.

Учебный пример и ожидаемый результат

Для объяснения отрицательной ветки можно взять RAW_JSON={}, демонстрационный KEY_BASE64=AAAAAAAAAAAAAAAAAAAAAA== и подпись из 64 нулей. Такой ключ содержит 16 нулевых байт и предназначен только для учебного примера. Форматы параметров корректны, но подпись не совпадает: ожидается успешная проверка с valid=N. Для рабочих сообщений используйте собственный секрет.

Пример показывает подготовленные учебные данные. Фактический результат зависит от переданных значений и доступных данных вашего процесса.

Что возвращает и как продолжить процесс

  • «Подпись совпадает» (valid).

Робот возвращает только признак совпадения подписи. Неверная подпись при правильных форматах даёт отрицательный результат без ошибки действия. Некорректная длина подписи, Base64 или JSON приводит к ошибке параметров и требует исправить вход.

Выход «Статус выполнения» проверяйте перед передачей результата дальше. При отрицательном статусе прочитайте «Пояснение ошибки» и направьте процесс на исправление исходных данных. Успешный статус подтверждает выполнение действия; содержательные признаки результата проверяйте отдельно.

Ограничения и разбор ошибок

Принимает RAW_JSON: исходный JSON-объект или массив до 1 МБ UTF-8, KEY_BASE64: секретный ключ в строгом Base64 (16–4096 байт), SIGNATURE_HEX: ровно 64 шестнадцатеричных символа. Пробелы, порядок ключей, экранирование и переводы строк входят в подписываемые данные; нужно передавать исходную строку без пересборки. Повторные JSON-ключи и нечисловые константы отклоняются. Регистр шестнадцатеричной подписи не важен. Возвращает только valid Y/N. Правильный формат с несовпавшей подписью: успешная проверка с valid=N; неверные параметры: ошибка. Не проверяет срок действия или повторы сообщения и не заменяет безопасное хранение ключа. Секрет и тело передаются процессом; не помещайте их в общедоступные шаблоны.

Проверка не устанавливает срок действия и не защищает от повторной передачи уже подписанного сообщения. Проверку даты, уникального номера и повторов нужно проектировать отдельно. Нельзя форматировать JSON перед этим роботом: даже добавленный пробел изменяет подписываемую строку.