Как реализовать интеграцию 1С с порталом Госуслуг (ЕСИА) через API?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Интеграция систем 1С:Предприятие с государственными сервисами, в частности с порталом Госуслуг, является одной из самых сложных и востребованных задач для современного разработчика. В этой статье мы подробно разберем, как подступиться к этой задаче, какие технические и бюрократические барьеры предстоит преодолеть, и проанализируем архитектуру взаимодействия с Единой системой идентификации и автоматизации (ЕСИА).

Понимание архитектуры и протоколов взаимодействия

Для начала выясним причину сложности процесса. Основной протокол, на котором базируется API Госуслуг — это OAuth 2.0 в связке с OpenID Connect. Для разработчика 1С это означает интенсивную работу с HTTP-запросами. Однако, в отличие от простых интеграций с социальными сетями или мессенджерами, здесь вступает в силу требование по обеспечению безопасности государственной информационной системы.

Рассмотрим основные этапы взаимодействия:

  1. Перенаправление пользователя на страницу авторизации ЕСИА.
  2. Получение временного кода авторизации (auth_code).
  3. Обмен кода на токен доступа (access_token) с использованием электронной подписи организации.
  4. Вызов методов API с использованием полученного токена.

Критический этап: Работа с ГОСТ-криптографией

Проанализируем ситуацию с безопасностью. Это самый трудоемкий блок при разработке на языке 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-запросе

Регистрация в технологическом портале

Выясним причину, по которой нельзя просто начать писать код. Прежде чем отправить первый запрос, ваша информационная система должна быть легализована в реестре Минцифры. Процесс включает следующие шаги:

  1. Получение УКЭП: Вам понадобится квалифицированный сертификат электронной подписи юридического лица.
  2. Заявка в Минцифры: Необходимо направить официальное обращение для подключения к тестовому контуру (песочнице).
  3. Технологический портал ЕСИА: В личном кабинете администратора организации на техпортале нужно зарегистрировать вашу ИС и загрузить туда публичную часть вашего сертификата (файл .cer).
  4. Мнемоника: После регистрации системе будет присвоена "мнемоника" (идентификатор), которую вы будете использовать в качестве client_id.

Реализация обмена данными в 1С

Посмотрим на пример того, как может выглядеть выполнение 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-сервисов и запросов) является лишь финальным этапом этой большой работы.

← На главную