Amazon S3. Вычисляем сигнатуры подписи. Объектное хранилище
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В коде реализовано вычисление Signature Version 4.
Тестовые сценарии в виде архива можно скачать с Amazon по ссылке https://docs.aws.amazon.com/en_us/general/latest/gr/signature-v4-test-suite.html
Детализация шагов вычисления сигнатуры описано здесь: https://docs.aws.amazon.com/en_us/general/latest/gr/sigv4_signing.html
Код модуля обработки представлен в файле "src_DataProcessors_ТестированиеИнтеграцииСS3_Forms_Форма_Module.bsl", код общего серверного модуля в файле "src_CommonModules_ОбъектноеХранилищеИнтеграцияСервер_Module.bsl".
Точка входа для начала тестирования процедура
ТестированиеВычисленияСигнатурыПодписиНаСервере();
Тестовые сценарии задаются в серверном модуле. Сейчас их два:
//get-vanilla-query-order-key-case
//get-vanilla-query
По каждому сценарию сравнивается промежуточный результат с эталоном:
Для Каждого ТестовыйПример Из ТаблицаТестовыхПримеров Цикл
ИнициализироватьТестовуюСтруктуруДанныхДляЗапросаS3(Данные, ТестовыйПример.ИмяТеста);
СигнатураШаг1СоздатьИПодписатьКаноническийЗапрос(Данные);
СигнатураШаг2СоздатьСтрокуДляПодписи(Данные);
СигнатураШаг3СоздатьКлючПодписиИПодписатьСтроку(Данные);
СигнатураШаг4СоздатьЗаголовокАвторизации(Данные);
ТестовыйПример.Результат = Данные["CanonicalQueryStringHash"] = ТестовыйПример.CanonicalQueryStringHash;
ТестовыйПример.Результат = Данные["StringToSign"] = ТестовыйПример.StringToSign;
ТестовыйПример.Результат = Данные["Signature"] = ТестовыйПример.Signature;
ТестовыйПример.Результат = Данные["Authorization"] = ТестовыйПример.Authorization;
КонецЦикла;
В коде не реализован возврат результата тестирования. Работа с тестом проводилась в отладчике.
Код не является самодостаточным и служит только для примера для собственных проверок.
Работа проверялась на версии платформы 8.3.14.
Проверка это только часть функционала по реализации протокола AWS S3, который планирую выложить отдельной публикацией.
P.S. есть готовая библиотека "Коннектор" (//infostart.ru/public/709325/), которая dв т.ч. включает реализацию вычисления сигнатуры AWS4-HMAC-SHA256.
Вступайте в нашу телеграмм-группу Инфостарт