Интеграция систем 1С:Предприятие с государственными сервисами, в частности с порталом Госуслуг, является одной из самых сложных и востребованных задач для современного разработчика. В этой статье мы подробно разберем, как подступиться к этой задаче, какие технические и бюрократические барьеры предстоит преодолеть, и проанализируем архитектуру взаимодействия с Единой системой идентификации и автоматизации (ЕСИА).
Для начала выясним причину сложности процесса. Основной протокол, на котором базируется API Госуслуг — это OAuth 2.0 в связке с OpenID Connect. Для разработчика 1С это означает интенсивную работу с HTTP-запросами. Однако, в отличие от простых интеграций с социальными сетями или мессенджерами, здесь вступает в силу требование по обеспечению безопасности государственной информационной системы.
Рассмотрим основные этапы взаимодействия:
Проанализируем ситуацию с безопасностью. Это самый трудоемкий блок при разработке на языке 1С — задача упрощается через интеграцию с Госключом для квалифицированной подписи. Госуслуги требуют использования российских криптографических алгоритмов (ГОСТ Р 34.10-2012). При каждом запросе на получение токена ваша система должна формировать так называемый Client Assertion — это подписанный набор данных в формате PKCS#7 (CMS) с отсоединенной подписью.
Разберем подробнее проблемы, с которыми сталкиваются программисты 1С:
Стандартные средства платформы (объект МенеджерКриптографии) не всегда позволяют сформировать подпись в том специфическом виде, который ожидает принимающий сервер ЕСИА. Часто требуется использование внешних компонент или работа через COM-объект КриптоПро CSP. Посмотрим на логику формирования подписи:
// Пример логики подготовки данных для подписи (псевдокод)
ДанныеДляПодписи = ИдентификаторКлиента + Скоуп + ВременнаяМетка + Состояние;
Менеджер = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);
Сертификат = Менеджер.ВыбратьСертификатИзХранилища(Ложь);
Подпись = Менеджер.Подписать(ДанныеДляПодписи, Сертификат);
// Подпись должна быть преобразована в Base64Url для передачи в POST-запросе
Выясним причину, по которой нельзя просто начать писать код. Прежде чем отправить первый запрос, ваша информационная система должна быть легализована в реестре Минцифры. Процесс включает следующие шаги:
client_id.Посмотрим на пример того, как может выглядеть выполнение HTTP-запроса для получения токена после того, как все подписи сформированы. Мы используем объекты HTTPСоединение и HTTPЗапрос.
// Настройка защищенного соединения
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
// Создание соединения с сервером ЕСИА
Соединение = Новый HTTPСоединение("esia.gosuslugi.ru", 443,,,,, ЗащищенноеСоединение);
// Подготовка параметров запроса
Параметры = "grant_type=authorization_code"
+ "&code=" + КодАвторизации
+ "&client_id=" + МнемоникаСистемы
+ "&client_assertion=" + СформированнаяПодпись
+ "&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
+ "&redirect_uri=" + АдресВозврата;
Запрос = Новый HTTPЗапрос("/idp/oauth2/token");
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Запрос.УстановитьТелоИзСтроки(Параметры);
Попытка
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
// Разбор JSON с токеном
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
ДанныеТокена = ПрочитатьJSON(ЧтениеJSON);
ТокенДоступа = ДанныеТокена.access_token;
КонецЕсли;
Исключение
Сообщить("Ошибка связи: " + ОписаниеОшибки());
КонецПопытки;
Важно не путать две разные системы, которые часто объединяют понятием "интеграция с Госуслугами":
ЕСИА (Единая система идентификации и аутентификации) — это "вход через Госуслуги". Она позволяет идентифицировать личность, получить данные профиля пользователя (ФИО, СНИЛС, паспортные данные из ЛК) с его согласия.
СМЭВ (Система межведомственного электронного взаимодействия) — это инструмент для обмена данными между ведомствами и коммерческими организациями (например, банками). Здесь используются другие регламенты, XML-пакеты с подписью XMLDSIG и часто требуются выделенные каналы связи (ViPNet).
После успешной настройки авторизации, ваша система 1С сможет в автоматическом режиме получать следующие данные:
Подводя итог, можно сказать, что интеграция 1С с Госуслугами — это в первую очередь криптографический и административный квест. Основная сложность заключается в корректном формировании подписи по ГОСТу и прохождении бюрократических процедур регистрации системы. Техническая часть на стороне 1С (написание HTTP-сервисов и запросов) является лишь финальным этапом этой большой работы.