Проверка подписи органа власти с помощью сервиса СМЭВ


Проверка подписи органа власти


Как проверять электронную подпись (ЭП-ОВ, ЭП-СМЭВ, ЭП-ПГУ) формата XMLDSIG у SOAP-сообщения с помощью КриптоПро CSP + КриптоПро CADESCOM рассказывается в этом сообщении.

Проверку только подписи органа власти (ОВ) можно выполнить с помощью сервиса СМЭВ: "Сервис проверки технологической электронной цифровой подписи ЭП-ОВ SignatureVerification".

Этот сервис имеет две операции:
  • verifySignature - операция проверяет технологическую подпись ЭП-ОВ и валидирует сертификат, с помощью которого была установлена подпись;
  • signMessage - к сожалению в документации нет внятного описания, он нам и не нужен.
Операция verifySignature имеет три входных параметра:
  • message - сообщение с проставленной технологической подписью ИС
  • actor - идентификатор тега Security, содержащего подпись
  • isCertCheck - валидировать ли сертификат
И два выходных параметра:
  • errorCode - результат обработки документа
  • certificate - сертификат

Сценарий использования операции verifySignature


Информационная система Потребителя получает XML от другой информационной системы. Данный XML передается на вход сервису проверки технологической подписи в параметре message. В параметре actor должно быть указано значение http://smev.gosuslugi.ru/actors/smev. В параметре isCertCheck должно передаваться значение true. Если проверка проходит успешно, сервис возвращает нулевой код ошибки и сертификат, с помощью которого проставлена подпись.

Вызов сервиса


Процедура выполняет вызов операции веб-сервиса verifySignature. Первый параметр процедуры отвечает за XML-сообщение, а второй за результат проверки подписи. Сервис доступен по адресу http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003038/wsdl. Если веб-сервис не доступен в течении 30 секунд, процедура завершает возвратом отрицательного результата выполнения. Описание всех типов параметров и веб-сервиса смотрите в WSDL-файле по ссылке выше.

// Функция осуществляет проверку электронной подписи органа власти формата XMLDSIG.
//
// Параметры
//  ВходящееСообщение  - Строка - подписанный текст XML.
//  Результат  - Булево - результат проверки подписи.
//
// Возвращаемое значение:
//   Булево   - Истина, если проверка подписи завершилась ошибкой, в противном случае Ложь.
//
Функция ПроверитьКорректностьПодписи(ВходящееСообщение, Результат)

Выполнено = Истина;

Попытка

ПространствоИмен = "http://smev.gosuslugi.ru/SignatureTool/";
WSОпределение = Новый WSОпределения("http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003038/wsdl", , , 30);
СМЭВ = Новый WSПрокси(WSОпределение, ПространствоИмен, "SignatureToolService", "SignatureToolPort");

message = ВходящееСообщение;
isCertCheck = Истина;
actor = "http://smev.gosuslugi.ru/actors/smev";
ТипОшибка = СМЭВ.ФабрикаXDTO.Тип("http://idecs.nvg.ru/identityservice/ws/types/", "Error");
error = СМЭВ.ФабрикаXDTO.Создать(ТипОшибка);
certificate = "";
СМЭВ.verifySignature(message, isCertCheck, actor, error, certificate);

Результат = ?(error.errorCode = 0, Истина, Ложь);

Исключение
Выполнено = Ложь;
КонецПопытки;

Возврат Выполнено;

КонецФункции // ПроверитьКорректностьПодписи()


Минус данного решения - проверка только подписи органа власти.
Плюс - валидация сертификата органа власти.

Комментарии

  1. Добрый день!
    Можете рассказать с чего вообще начинать подключение к смэв из 1с? В частности нужно получить информация о начислениях и оплате штрафов.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, Михаил! Вся подробная информация описана на технологическом портале СМЭВ (https://smev.gosuslugi.ru/portal/faq.jsp#!/121). Обратите внимание, что для коммерческих организаций подключение к СМЭВ не осуществляется. Удачи!

      Удалить

Отправить комментарий