Работа с другими сервисами

Сервис smev-worker взаимодействует с сервисом smev-proxy-impl или с другими аналогичными сервисам с использованием очередей Kafka. Сервис поддерживает два топика - запросов и ответов, названия топиков указываются в файле настройки сервиса в параметрах kafka.requestTopic и kafka.responseTopic.
Примечание
Все сообщения, отправляемые в Kafka, должны быть зашифрованы с использованием алгоритма ГОСТ Р 34.12-2015 «Кузнечик».
При написании приложения, работающего с smev-worker напрямую, минуя smev-proxy-impl, необходимо выполнить следующие шаги:
  1. Реализация механизма шифрования/дешифрования сообщений из Kafka с использованием алгоритма ГОСТ Р 34.12-2015 «Кузнечик». В качестве пароля и соли для шифрования/дешифрования используются параметры, указанные в файле настройки smev-worker в параметрах app.encryptionProvider.password и app.encryptionProvider.salt.
  2. Реализация продюсера запросов в Kafka: payload - запрос, соответствующий API smev-proxy-impl, в виде json-объекта, преобразованного в строку и зашифрованного с использованием алгоритма ГОСТ Р 34.12-2015 «Кузнечик».
headers:
  • requestId - идентификатор запроса, сформированный в формате UUID на основе времени формирования запроса и MAC-адреса компьютера, на котором формировался запрос;
  • payloadType - полное имя класса запроса в соответствии с API smev-proxy-impl;
  • clientId - алиас сертификата, загруженного в крипто-сервис, которым необходимо подписать запрос.
Примечание
Запрос не будет обработан при отсутствии любого из этих header.
  1. Реализация консьюмера ответов из Kafka:
  • payload - строка зашифрована и преобразована в строку json-объект ответа в соответствии с API smev-proxy-impl;
headers:
  • payloadType - полное имя класса ответа в соответствии с API smev-proxy-impl;
  • requestId - идентификатор запроса, на который поступил ответ.
Для ускорения написания java-приложений можно воспользоваться уже готовым encryptionProvider. EncryptionProvider реализует механизм шифрования/дешифрования данных с использованием алгоритма ГОСТ Р 34.12-2015 «Кузнечик». Для использования encryptionProvider необходимо выполнить следующее:
  1. Подключить зависимость:
<dependency>
    <groupId>ru.sberbank.gostech.smev</groupId>
    <artifactId>smev-encryption-provider</artifactId>
    <version>${актуальная версия}</version>
</dependency>
  1. Создать бин провайдера:
@Bean
SmevEncryptionProvider smevEncryptionProvider(@Value("${app.encryptionProvider.password}") String password,
    @Value("${app.encryptionProvider.salt:125f7a7310b8cc27}") String salt) {
  return new GOST3412_2015EngineSmevEncryptionProvider(password, salt);
}
  1. Добавить в файлы настройки параметры app.encryptionProvider.password и app.encryptionProvider.salt (аналогичные настройкам smev-worker):
app:
  encryptionProvider:
    password: "password"
    salt: "125f7a7310b8cc27"
  1. Произвести шифрования или дешифровку данных:
//шифрование сообщения перед отправкой в топик Kafka
//jsonMsg - строка, полученная в результате маппинга API объекта
String cipherText = encryptionProvider.encrypt(jsonMsg);

//расшифровка сообщения, полученного из топика Kafka
//payload - строка, полученная из топика
String msg = encryptionProvider.decrypt(payload);

Демопримеры

В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
СМЭВ
Отправка тестовых запросов в СМЭВ с присвоением успешно отправленным запросам уникальных идентификаторов
Предыдущий раздел
Опрос СМЭВ
Следующий раздел
Получение данных
Была ли страница полезной?