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

Сервис smev-data-provider взаимодействует с сервисами, используя очереди Kafka. Сервис поддерживает три топика - запросов, ответов и подписок, где названия топиков указываются в файле настройки. Описание топиков приведено в таблице ниже:
НазваниеНазначениеИмя параметраЗаголовки сообщенийШифрование
Очередь запросов
Очередь входящих запросов для поставщика данныхkafka.requestTopicrequestId - идентификатор запроса
clientId - идентификатор клиента (keyAlias)
namespace - пространство имен запроса
rootElement - корневой элемент запроса
ГОСТ 3412 2015 «Кузнечик»
Очередь ответов
Очередь исходящих ответов от поставщика данныхkafka.responseTopicrequestId - идентификатор запроса
clientId - идентификатор клиента (keyAlias)
ГОСТ 3412 2015 «Кузнечик»
Очередь подписок
Очередь входящих сообщений по подпискамkafka.broadcastTopicrequestId - идентификатор запроса
payloadType - тип бизнес данных
clientId - идентификатор клиента (keyAlias)
ГОСТ 3412 2015 «Кузнечик»
При написании приложения, работающего с smev-data-provider, необходимо выполнить следующие шаги:
  1. Реализация механизма шифрования/дешифрования сообщений из Kafka с использованием алгоритма ГОСТ Р 34.12-2015 «Кузнечик». В качестве ключа использовать ключ полученный через REST API "Возвращает ключ шифрования по keyAlias".
  2. Реализация консьюмера запросов из Kafka, используя информацию из таблицы выше.
  3. Реализация продюсера ответов в Kafka, используя информацию по топику из таблицы выше.
Примечание
Запрос не будет обработан при отсутствии любого из этих header.

encryption-provider

Для ускорения написания 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.secretKey}") String secretKey) {
  return new GOST3412_2015EngineSmevEncryptionProvider(secretKey);
}
  1. Добавить в файлы настройки параметры app.encryptionProvider.secretKey:
app:
  encryptionProvider:
    secretKey: "125f7a7310b8cc27"
  1. Произвести шифрования или дешифровку данных:
//шифрование сообщения перед отправкой в топик Kafka
//jsonMsg - строка, полученная в результате маппинга API объекта
String cipherText = encryptionProvider.encrypt(jsonMsg);
  
  
//расшифровка сообщения, полученного из топика Kafka
//payload - строка, полученная из топика
String msg = encryptionProvider.decrypt(payload);

Описание методов интерфейса

Основной интерфейс SmevEncryptionProvider описывает методы работы с шифрованием.
МетодОписание
String encrypt(String text)
Зашифровка текст
Pair<InputStream, Long> encrypt(InputStream inputStream, Long length)
Зашифровка потока данных. Поток данных inputStream будет закрыт
String encrypt(String text, String secretKey)
Зашифровка текста с использованием ключа шифрования
Pair<InputStream, Long> encrypt(InputStream inputStream, Long length, String secretKey)
Зашифровка потока данных с помощью ключа шифрования. Поток данных inputStream будет закрыт
String decrypt(String cipherText)
Расшифровка текста
Pair<InputStream, Long> decrypt(InputStream cipherInputStream, Long length)
Расшифровка потока данных. Поток данных cipherInputStream будет закрыт
String decrypt(String cipherText, String secretKey)
Расшифровка текста с использованием ключа шифрования
Pair<InputStream, Long> decrypt(InputStream cipherInputStream, Long length, String secretKey)
Расшифровка потока данных с помощью ключа шифрования. Поток данных cipherInputStream будет закрыт
String generateSecretKey(String keyAlias)
Генерация секретного ключа для шифрования/дешифрования данных

Описание конструкторов

GOST3412_2015EngineSmevEncryptionProvider - реализация интерфейса SmevEncryptionProvider для работы с алгоритмом ГОСТ 34.12-2015 «Кузнечик».
КонструкторОписание
public GOST3412_2015EngineSmevEncryptionProvider(String password, String salt)
Создание провайдера с использованием ключа на основе переданных пароля и соли
public GOST3412_2015EngineSmevEncryptionProvider(String secretKey)
Создание провайдера с использованием переданного ключа
public GOST3412_2015EngineSmevEncryptionProvider()
Создание провайдера без инициализации ключом шифрования

Демопримеры

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