Проверка подписи органа власти с помощью сервиса СМЭВ
Проверка подписи органа власти
Как проверять электронную подпись (ЭП-ОВ, ЭП-СМЭВ, ЭП-ПГУ) формата XMLDSIG у SOAP-сообщения с помощью КриптоПро CSP + КриптоПро CADESCOM рассказывается в этом сообщении.
Проверку только подписи органа власти (ОВ) можно выполнить с помощью сервиса СМЭВ: "Сервис проверки технологической электронной цифровой подписи ЭП-ОВ SignatureVerification".
Этот сервис имеет две операции:
- verifySignature - операция проверяет технологическую подпись ЭП-ОВ и валидирует сертификат, с помощью которого была установлена подпись;
- signMessage - к сожалению в документации нет внятного описания, он нам и не нужен.
- 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с? В частности нужно получить информация о начислениях и оплате штрафов.
Здравствуйте, Михаил! Вся подробная информация описана на технологическом портале СМЭВ (https://smev.gosuslugi.ru/portal/faq.jsp#!/121). Обратите внимание, что для коммерческих организаций подключение к СМЭВ не осуществляется. Удачи!
Удалить