Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33 pos gosuslugi

Время на прочтение

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

При выполнении очередного госзаказа наша команда столкнулась с проблемой интеграции сайта с ЕСИА. Инструкции по решению этой задачи в сети нет, кроме информации в официальных документах МинКомСвязи (примерно 300 страниц в трех регламентах). Также есть компании, которые оказывают платные услуги по интеграции ЕСИА. Мы реализовали, описали процесс интеграции и решили поделиться с сообществом habrahabr.

Содержание
  1. Общие положения
  2. Что такое ЕСИА
  3. Введение
  4. Зарождение идеи
  5. Как это работает
  6. Неожиданная поломка
  7. Как подключить сайт компании к ЕСИА
  8. Регистрация руководителя организации на Госуслугах
  9. Регистрация компании на Госуслугах
  10. Регистрация информационной системы на технологическом портале Госуслуг
  11. Получение сертификата и закрытого ключа для новой ИС
  12. Подключение к тестовой среде ЕСИА
  13. Разработка или покупка сервиса интеграции с ЕСИА
  14. Подключение к промышленной среде ЕСИА
  15. Создаем свой сервис интеграции с ЕСИА
  16. В OpenSSL нет поддержки ГОСТ
  17. Генерация секретного. pem ключа из шести файлов КриптоПро
  18. Генерация ссылки для авторизации на портале ЕСИА
  19. Создаем окружение при помощи Docker
  20. Проект для демонстрации интеграции с ЕСИА
  21. А как же КриптоПро?
  22. Список источников
  23. Предисловие
  24. Перенаправление в ЕСИА и аутентификация
  25. Доступ к сервисам шлюза
  26. Шаг №7 — заполнение и отправка заявки на промышленную среду
  27. Шаг №4 — генерация необходимых файлов
  28. Шаг №2 — предоставление доступа к тех. порталу
  29. Шаг №8 — завершение работ и передача ключа и сертификата
  30. Получение данных организации
  31. Шаг №3 — создание ИС на тех. портале
  32. Получение данных пользователя из ЕСИА
  33. Шаг №6 — отправка заявки на тестовую среду
  34. Базовая информация
  35. Шаг №5 — заполнение заявки на тестовую среду
  36. Схемы процесса взаимодействия между Клиентской ИС, ЕСИА Шлюзом и ЕСИА/ЕБС/ЦПГ
  37. Заключение

Общие положения

Взаимодействие клиентской системы с сервисами шлюза, обеспечивающими идентификацию пользователей через ЕСИА, происходит через стандартный протокол OAuth 2.0/OpenID Connect. Авторизация в ЕСИА происходит, в данном случае, как обычная OAuth авторизация.

Для работы с данным протоколом имеются готовые открытые реализации под большинство популярных программных платформ.

Чтобы начать работу с ЕСИА Шлюзом необходимо интегрировать в целевую информационную систему одно из готовых средств, реализующих работу с протоколом OAuth 2.0.

Спецификация OpenID Connect

Что такое ЕСИА

Единая Система Идентификации и Аутентификации — российская информациия система, обеспечивающая доступ (регистрация, аутентификация) на сайты государтсвенных структур и некоторых коммерческих организаций. Подробнее на википедии

В процессе интеграции ЕСИА, система сможет отправлять запрос на ЕСИА и при успешной авторизации получать в качестве ответа данные пользователя

Сценарий авторизации выглядит примерно так:

  • Система переадресует на сайт ЕСИА
  • При успешной авторизации ЕСИА возвращает пользователя обратно на сайт и по защищенному протоколу передает его личные данные

1. Теперь для своей ИС необходимо сгенерировать закрытый ключ и сертификат открытого ключа. Закрытый ключ будет использоваться модулем авторизации, а сертификат требуется для идентификации ИС при взаимодействии с ЕСИА (см. пп. 2 п. 3.1.1 Методических рекомендаций).

2. Формируем файл метаданных. В нем содержится сертификат, полученный на предыдущем шаге. Образец файла метаданных приведен в Методических рекомендациях.

3. Отправляем заявку на подключение ИС к тестовой среде ЕСИА. Форма заявки указана в Приложении “Е” Регламента. К заявке прикрепляется полученный на предыдущем шаге файл метаданных. В результате регистрации в министерстве связи ваша ИС получает возможность использовать созданный ключ для взаимодействия с Оператором ЕСИА.

4. Теперь нужно разработать или приобрести модуль авторизации ЕСИА, который будет встраиваться в ИС и обеспечивать процедуры формирования и отправки запросов и получения данных.

5. Когда модуль авторизации встроен и пришёл ответ Минкомсвязи о получении тестового доступа можно произвести отладку взаимодействия модуля авторизации и ЕСИА.

6. После отладки нужно направить заявку на подключение ИС к промышленной среде ЕСИА. Форма заявки указана в Приложении “М” Регламента. Как и в случае с подключением к тестовой среде, к заявке необходимо приложить файл метаданных, полученный на шаге 2, заменив в нем тестовые данные на промышленные.

На этом подключение ИС к единой системе идентификации и аутентификации завершено. Бланки заявок можно запросить здесь: http://esia.pro/blanki_zayavok

Введение

Стоит упомянуть, что есть компании, которые имеют готовые решения для интеграции с ЕСИА, например эта или вот эта — если вам лень во всем этом разбираться, можно воспользоваться их услугами. Сами не пользовались, советовать не можем.

  • Регистрация ИС в регистре информационных систем ЕСИА
  • Регистрация ИС в тестовой среде
  • Выполнение доработки системы для взаимодействия с ЕСИА

В данной статье будет описан только 3 пункт, предыдущие 2 – бюрократия, оставим ее за рамками Хабра. В методичке предлагают реализовать интеграцию 2 способами: SAML или OpenID Connect. Говорят,

с 01.01.2018 г. взаимодействие по протоколу SAML 2.0 больше не будет разрешено (только для действующих систем). Для подключения к ЕСИА необходимо будет использовать протокол OAuth 2.0 / OpenID Connect (сейчас доступны оба варианта).

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

  • Система-клиент отправляет в ЕСИА запрос на аутентификацию
  • После успешной аутентификации ЕСИА возвращает ответ системе с кодом аутентификации.
  • Используя код аутентификации система получает доступ к данным пользователя

Привет, меня зовут Никита Нятин. Я главный разработчик PHP в Уральском банке реконструкции и развития. Расскажу, как мы в банке внедряли интеграцию с Единой системой идентификации и аутентификации (ЕСИА) на PHP и какие проблемы пришлось решать.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Зарождение идеи

В УБРиР есть сервис посадочных страниц, позволяющий клиентам оставлять заявки на кредит, вклад и РКО. В 2019 году у нас возникла идея упростить процесс заполнения заявки на кредит. Зачем клиенту указывать ФИО, адрес регистрации, если все эти сведения уже есть на сайте Госуслуг (ГУ), который также называют ЕСИА.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Как это работает

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

После успешной авторизации нужно дать согласие на передачу своих данных ПАО КБ УБРиР.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Когда согласие дано, клиент перенаправляется обратно на посадочную страницу, где уже заполнены ФИО и паспортные данные, полученные от сайта ГУ. Остается только убедиться, что все верно, и отправить заявку.

Неожиданная поломка

Первая версия интеграции была написана в 2019 году и создавалась в рамках монолитного приложения, написанного на PHP 7.1. Реализовать интеграцию было непросто, но оно того стоило – клиенты стали пользоваться этой возможностью.

Радость длилась почти год, пока в августе 2020 года не истек сертификат, с помощью которого шло взаимодействие с ГУ. При попытке авторизоваться клиенты наблюдали ошибку. Это было для нас сюрпризом, поскольку мы не вели учет срока действия этого сертификата. Но это было не самое страшное. Оказывается, что с 1 апреля 2020 года RSA-сертификаты не могли использоваться для подписей запросов к ЕСИА.

Для устранения сбоя требовались следующие шаги:

  • получить в Удостоверяющем центре (УЦ) сертификат, выпущенный с использованием криптографического алгоритма ГОСТ Р 34.10-2012;
  • доработать нашу систему, чтобы она начала поддерживать работу с электронными подписями, выпущенными с использованием этого криптографического алгоритма.
Читайте также:  КОМИ КП РУ

Это было что-то! Интеграцию мы не смогли починить за один день, и за неделю не смогли, и за месяц тоже. Это было связано с тем, что первая версия интеграции была написана на скорую руку, без создания документации. Нам пришлось снова во всем разбираться и заново пройти процесс подключения к ЕСИА.

Как подключить сайт компании к ЕСИА

Нам пришлось изучить официальные документы по интеграции с ЕСИА и прочитать много статей. Какие шаги в итоге пришлось пройти, чтобы интеграция свершилась:

Регистрация руководителя организации на Госуслугах

Зарегистрировать компанию в ЕСИА может представитель, имеющий право действовать без доверенности. У него должна быть подтверждённая учётная запись физического лица. В нашем случае руководство банка уже было зарегистрировано на ГУ.

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

Для этого нужна квалифицированная электронная подпись (КЭП), которую можно получить в одном из аккредитованных Минцифрой России удостоверяющих центров. С ее помощью юридическое лицо подписывает документы и подтверждает различные запросы на портале. Для того, чтобы работать с электронной подписью, необходимо установить криптозащиту на устройство. Это программное обеспечение может быть как платное, так и бесплатное. Подробнее – в инструкции или видео. В нашем случае банк был уже зарегистрирован на ГУ.

Регистрация информационной системы на технологическом портале Госуслуг

Доступ к порталу получают сотрудники организации, включенные в специальную группу “Технологический портал” и имеющие личную учетную запись на Госуслугах, это – обязательное условие для получения прав доступа к Техпорталу. После регистрации система заносится в реестр информационных систем (ИС) и получает мнемонику, то есть буквенно-цифровой код системы (к примеру, ROMASHKA, VECTOR, 123555_3S).

Существует небольшое Руководство пользователя технологического портала ЕСИА (47 страниц). В нем наглядно показано, как можно добавить новую ИС.

В нашем банке нашелся сотрудник, который уже имел доступ в портал, – он создал для нас новую ИС. Увы, этого было недостаточно. В руководстве написано: “создание записи ИС не означает, что данные ИС получают возможности по использованию программных интерфейсов ЕСИА. Для получения таких возможностей необходимо выполнить действия согласно Регламенту информационного взаимодействия Участников с Оператором ЕСИА и Оператором эксплуатации инфраструктуры электронного правительства”.

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

Получение сертификата и закрытого ключа для новой ИС

Сертификат должен удовлетворять следующим требованиям:

  • выдан аккредитованным Удостоверяющим центром. Благо в г. Екатеринбурге, где расположен главный офис УБРиР, есть два таких аккредитованных УЦ;
  • соответствует алгоритму формирования электронной подписи ГОСТ Р 34.10-2021 или алгоритму криптографического хэширования ГОСТ Р 34.11-2012;
  • должен содержать ОГРН юридического лица (ЮЛ), являющегося оператором ИС (может быть выпущен как на сотрудника ЮЛ, так и на организацию). Таким образом, в сертификате должна содержаться информация о том, что этот ключ относится именно к нашему банку.

При первичном получении сертификата нужно было посетить офис Контура (ООО Сертум-Про), при перевыпуске сертификата посещение не требуется – достаточно сформировать заявку в личном кабинете Контура. Далее там же выпускаются новые сертификат и ключ, которые записываются на виртуальную флешку (виртуальный образ с расширением .img).

Полученный сертификат – это файл с названием из 40 цифр, к примеру,  1151593111080991181175644517328337074622.cer. Этот сертификат нужно загрузить в карточку ИС на Техпортале.

Кстати, если открыть сертификат в текстовом редакторе, то там может оказаться абракадабра:

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Это значит, что сертификат в бинарном формате. Если кликнуть по файлу сертификата в ОС Windows, появится диалоговое окно, в котором его можно преобразовать в другой формат – в X.509 (.CER) в кодировке Base-64:

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Полученный файл сертификата можно открыть в текстовом редакторе и увидеть цифры и латинские буквы между “——BEGIN CERTIFICATE—–” и “—–END CERTIFICATE—–”. Это значит, что сертификат в кодировке base64.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Закрытый ключ представляет собой папку с 6 файлами с расширением .key из контейнера КриптоПро:

Эти файлы понадобятся на сервере приложения при настройке интеграции с ЕСИА.

Подключение к тестовой среде ЕСИА

Форма этой заявки приведена в Регламенте взаимодействия заявителей с операторами ЕСИА (Приложение Г). Вот как это выглядело у нас. Мы в Microsoft Word создали документ и заполнили его нужными данными.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

В пункте “Планируемые к использованию программные интерфейсы” мы указали следующее:

  • скоупы: fullname, birthdate, birthplace, email, mobile, contacts, id_doc, snils, inn;
  • файл сертификата: 1151593111080991181175644517328337074622.cer.

На форуме КриптоПро некоторые пользователи говорят, что неправильно использовать промышленный сертификат в тестовой среде. Тем не менее этот вариант допустим, поэтому мы им воспользовались, чтобы не тратить время.

Разработка или покупка сервиса интеграции с ЕСИА

Когда администраторы ГУ открывают доступ, компании нужно подключить свою систему к ЕСИА, чтобы она могла принимать и отправлять запросы. Минцифры не позволит подключиться к промышленной среде ЕСИА, если интеграция не будет работать в тестовой среде. В нашем случае мы решили не искать стороннее решение, а написать свой коннектор к ЕСИА на языке PHP.

Подключение к промышленной среде ЕСИА

Когда интеграция на тестовом стенде начинает работать, можно отправлять заявку на подключение ИС к промышленной среде. Форма заявки та же, что и в п.5, но только для промышленной среды.

Вот и все шаги, выполнив которые, мы смогли, наконец, порадоваться созданной интеграции с ЕСИА. Но не все так солнечно, поскольку технически непросто реализовать сервис авторизации в п.6. Об этом расскажем дальше.

Создаем свой сервис интеграции с ЕСИА

При создании собственного сервиса нам пришлось учитывать несколько ключевых моментов.

В OpenSSL нет поддержки ГОСТ

Алгоритм ГОСТ есть в библиотеке OpenSSL. Вернее, был. Начиная с версии OpenSSL 1.1.0 gost engine был удален из основного пакета, так как недостаточно активно поддерживался (см. CHANGES.md). Это значит, что по умолчанию шифрование алгоритмом ГОСТ в openssl не доступно. Тем не менее, работа над движком ГОСТ продолжается, но уже в рамках отдельного репозитория gost-engine/engine.

Подключаемся к проду по SSH и смотрим, поддерживает ли библиотека openssl шифрование ГОСТ:

Если эта команда ничего не вернет, значит, поддержки ГОСТ на сервере нет. У нас так и получилось.

Мы побоялись сломать прод из-за возможных сбоев при подключении gost engine к OpenSSL. Также выяснили, что другой проект в нашем банке хочет взаимодействовать с ЕСИА. Поэтому было решено создать отдельный сервис – esia-connector.

Задачи этого сервиса:

  • сгенерировать ссылку, перейдя по которой, пользователь окажется на сайте Госуслуг, где нужно авторизоваться и согласиться предоставить банку свои данные;
  • при помощи токена запросить данные пользователя в ГУ и сохранить их в базе данных сервиса;
  • предоставить другим сервисам Банка доступ к этим данным. Простое REST API, которое позволит другим внутренним сервисам получить доступ к данным клиента.
Читайте также:  Пособия на ребенка после нового года

Генерация секретного. pem ключа из шести файлов КриптоПро

В УЦ мы уже получили сертификат и файлы секретного ключа для нашей ИС. Файлы секретного ключа из контейнера КриптоПро представляют собой папку, в которой расположены 6 файлов с расширением .key:

Нам нужно получить из них один файл в формате .pem. Для этого мы проделали серию шагов:

  • скачали и распаковали .zip-файл проекта https://github.com/garex/nodejs-gost-crypto;
  • создали в корне этого проекта (где файл package.json) папку “keys” и поместили туда шесть файлов от КриптоПро с расширением .key;
  • открыли консоль и перешли в корень этого проекта;
  • убедились, что у нас на ПК установлен Node.js: node -v;
  • установили зависимости: npm install;

В итоге у нас появился файл private-key.pem. На удивление, объем его крайне мал – всего 4 строчки, например:

——-BEGIN PRIVATE KEY——-
MEgCAQFwHwYIkoUDBwEBAQwEwYHKoUDAgIkAAYIkAAYIKoUDBwEBAgIEIgQgtWkIBZW5
mUvc6UE12SuwcdsTcXXD6hqcXZPYmNcdusE=
——-END PRIVATE KEY——-

Несмотря на свой небольшой размер, он помог нам установить связь с ЕСИА.

Генерация ссылки для авторизации на портале ЕСИА

Нам нужно было как-то сгенерировать ссылку, перейдя по которой, пользователь окажется на сайте Госуслуг. Может быть, так?

Если бы все было так просто. Вы можете перейти по этой ссылке, авторизоваться, но волшебства не случится, ведь мы не сообщаем ЕСИА, что у клиента нужно спросить разрешения поделиться своими данными с банком.

На самом деле, генерация этой ссылки – непростая задача. Лучше ее поручить сторонней библиотеке: https://github.com/fr05t1k/esia. Она поддерживает PHP 8.

Но и тут снова никаких чудес не произошло – эта библиотека просто так работать не будет. Нам нужно создать окружение, где есть openssl с поддержкой ГОСТ, а также php-fpm, nginx.

Создаем окружение при помощи Docker

Нам помог проект https://github.com/rnixik/docker-openssl-gost. Однако на момент написания этой статьи он использовал устаревшие версии библиотек. Поэтому нам пришлось самостоятельно решать, как добавить к свежей версии PHP поддержку ГОСТ. Это было непросто, но после пары недель изысканий нам это удалось.

Решение на удивление оказалось простым:

  • берем актуальный docker-образ PHP, к примеру php:8-fpm-bullseye;
  • на основе этого образа в Dockerfile делаем сборку gost-engine из ветки openssl_1_1_1;
  • редактируем конфиг OpenSSL, чтобы подключить gost-engine.

Проект для демонстрации интеграции с ЕСИА

Лучше один раз попробовать, чем сто раз услышать или увидеть. Мы создали тестовый проект https://github.com/yesnik/esia-mini.

Установив его, вы сами сможете подключиться к тестовому стенду ЕСИА, загрузить оттуда данные тестовой учетной записи и на практике понять, как это все работает.

Как видите, очень даже возможно добавить поддержку ГОСТ к свежему образу PHP и настроить связь с Госуслугами.

А как же КриптоПро?

Оказывается, что для связи с ЕСИА необходимо использовать сертифицированный криптопровайдер. Безопасность должна быть безопасной. Одним из таких решений является КриптоПро. Для реализации интеграции с ГУ на проде нам пришлось его приобрести. У этого решения есть свои особенности подключения к PHP, но это тема отдельной статьи. А так, для тренировки общения с тестовым стендом ЕСИА вполне подойдет наш проект.

Список источников

Для получение каких-либо данных в ЕСИА нам нужно получить токен доступа. Для этого формируем POST запрос в ЕСИА (для тестовой среды базовый url такой: https://esia-portal1.test.gosuslugi.ru/aas/oauth2/te — EsiaTokenUrl). Основные поля запроса тут формируются аналогичным образом, в коде получается примерно следующее:

Некоторые статичные параметры запроса получаем из файла конфигурации (поле Configuration). Как мы можем видеть, поле code запроса заполняется значением кода аутентификации, полученным ранее. Для десериализации ответа используется следующие классы:

Предисловие

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Перенаправление в ЕСИА и аутентификация

Начнем пошаговую реализацию с пунктов 1-4: нам нужно перенаправить пользователя на сервис аутентификации ЕСИА (EsiaAuthUrl). В зависимости от среды (тестовая или продуктив) различается базовый адрес url – для тестовой среды это https://esia-portal1.test.gosuslugi.ru/aas/oauth2/ac. Полный адрес получается таким:

где RedirectUri – адрес, на который будет направлен ответ от ЕСИА, а ClientSecret – результат выполнения функции GetClientSecret. Остальные параметры описаны ранее.

Доступ к сервисам шлюза

Для доступа к сервисам шлюза необходимо с помощью функциональных инструментов его административной панели создать КИС, указав в её параметрах «Пути возврата» – URL-адрес(а) клиентской ИС (потребителя идентификации), на которые шлюз будет отвечать после выполнения авторизации.

Для доступа к сервисам шлюза потребуются следующие реквизиты:

  • адрес шлюза (например, адрес демо стенда RNDSOFT https://gate.esia.pro/);
  • идентификатор клиента (например, a4fb804bfdf54df4f4da7faae24375e6);
  • секрет клиента (например, 6cd6a2bd732bb66fed6ff7fd7ca2442ccc316a8e6764cbea4e8ad589407a4c28);
  • страница с конфигурацией OАuth https://gate.esia.pro/.well-known/openid-configuration

Значение идентификатора и секрета для КИС берутся из её параметров в административной панели шлюза.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

ЕСИА Шлюз не занимается валидацией скоупов, переданных клиентской системой. Скоупы просто передаются в ЕСИА. Поэтому .well-known/openid-configuration содержит пустой массив в scopes_supported.

Шаг №7 — заполнение и отправка заявки на промышленную среду

После получения положительного ответа о подключении к тестовой среде ЕСИА
следует аналогично шагам №5-6 направить заявку на “На подключение к
промышленной среде ЕСИА”. В бланке заявке указать номер заявки на подключение к тестовой среде.

Шаг №4 — генерация необходимых файлов

При подаче заявки на подключение к тестовой среде ЕСИА вам потребуются ключ и
сертификат ключа.

Для получения необходимо обратиться в один из аккредитованных удостоверяющих
центров. Ключом будут шифроваться запросы от вашей ИС к ЕСИА. Перечень
аккредитованных удостоверяющих центров доступен по адресу
https://digital.gov.ru/ru/activity/govservices/certification_authority/ . Для экспорта ключа
используйте инструкцию указанную на шаге №8.

Шаг №2 — предоставление доступа к тех. порталу

Для доступа к тех.порталу и переходу к шагу №3 вам необходимо, в учетной записи
созданной организации, перейти в раздел «Сотрудники» и добавить всех сотрудников,
которым будет необходим доступ к техпорталу. Во вкладке «Доступ к системам»,
также предоставить доступ всем сотрудников, которым необходим доступ для
управления системой.

Во вкладке «Группы доступа» необходимо «присоединить»
сотрудников, которым будет необходимо управлять ИС на техпортале, а также
«присоединить» администратора ИС к «Администраторам профиля ораганизации».

Внимание: После добавления сотрудников во все группы, необходимо выйти из
тех.портала и госуслуг, очистить кэш в браузере и перезайти в систему.

Шаг №8 — завершение работ и передача ключа и сертификата

После завершения процесса подключения необходимо экспортировать контейнер из КЭП в
соответствии с инструкцией – https://crypto.rnds.pro/.
Вам необходимо выполнить первые 5 шагов инструкции и полученные 6 файлов загрузить в систему.

Получение данных организации

Полученный токен доступа для запроса данных по организации мы использовать не можем, т.к. он завязан на определенный scope. Поэтому нужно получить отдельный токен. По сути методы получения токена доступа для организации и информации по ней не сильно отличаются от рассмотренных ранее. Для получения токена доступа мы используем идентификатор организации, код аутентификации, State предыдущего запроса на токен доступа. Новый scope формируется как список scope’ов организации, разделенных через пробел, например:

Читайте также:  Как работает идентификация пользователей в «Госуслугах»?

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

Полностью же код получения пользователя и его организации из ЕСИА выглядит так:

Шаг №3 — создание ИС на тех. портале

Необходимо зарегистрировать ИС через технологический портал. Подробную инструкцию по регистрации ИС в
ЕСИА смотрите в руководстве пользователя технологического портала:
руководство пользователя технологического портала. В результате регистрации ваша информационная
система заносится в реестр ИС, взаимодействующих с ЕСИА.

Внимание: мнемонику системы вы формируете самостоятельно. Мнемоника
представляет собой строку из 6 и более символов. Допустимо использование только
заглавных латинских букв и цифр. Не допускается использование символов (скобок,
подчеркиваний, тире, кавычек и.т.д.)

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

  • название системы – желательно использовать официальное название ИС на русском языке;
  • мнемоника системы – идентификатор системы, который будет использоваться в ЕСИА;
  • информация о системе – краткое описание ИС;
  • URL системы – url с обязательным указанием протокола HTTP/HTTPS, например: https://esia.gosuslugi.ru/;
  • Алгоритм формирования электронной подписи – GOST (как на скриншоте выше);
  • URL для отправки push сообщений – оставить пустым.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

  • поле URL для отправки push сообщений – оставить пустым;
  • «Категория информационной системы» – оставить по умолчанию, параметры «время жизни» не менять;
  • данные об ответственном за эксплуатацию ИС – ответственный должен быть предварительно зарегистрирован в ЕСИА и присоединен к организации-оператору ИС в качестве сотрудника. Для выбора сотрудника достаточно ввести первые буквы фамилии, после чего будут предложены возможные варианты. Поля «адрес электронной почты» и «номер телефона» отображаются автоматически после выбора сотрудники (это служебные контакты указанного сотрудника).

После заполнения данных полей необходимо нажать на кнопку «Сохранить». Запись ИС будет добавлена в регистр ЕСИА.

Получение данных пользователя из ЕСИА

Имея токен доступа и идентификатор пользователя можно получить данные о пользователе из ЕСИА. Рассмотрим пример получения ФИО пользователя и его организации. Для этого формируем GET запрос в REST API ЕСИА, для тестового контура базовый url (EsiaRestUrl) будет таким: https://esia-portal1.test.gosuslugi.ru/rs. Токен доступа передается в заголовке запроса, сам код выглядит следующим образом:

Этот метод принимает на вход идентификатор пользователя в ЕСИА и токен доступа – оба эти параметра мы получили на предыдущем этапе. Заметьте, запрос можно расширить и наряду с ФИО пользователя получить список его организаций. В этом случае мы получим список ссылок на организации пользователя, по которым можно будет получить данные в свою очередь. Таким образом, у нас получилась такая модель пользователя ЕСИА:

Шаг №6 — отправка заявки на тестовую среду

В соответствии с ч. 19 и ч. 21 ст. 14.1 Федерального закона от 27.07.2006 №149-ФЗ “Об информации, информационных технологиях и о защите информации” для обеспечения защиты передаваемых биометрических персональных данных от актуальных угроз безопасности должны применяться сертифицированные средства криптографии (шифрования). Таким образом каждый пользователь, инициирующий (по средством браузера) соединение, с целью проведения процедур биометрической идентификации должен быть уведомлён о необходимости установки российских сертифицированных средств криптографической защиты если таковые не были установлены в его браузере. В случае отказа пользователя от использования российских сертифицированных средств криптографической защиты его необходимо уведомить о рисках перехвата биометрических персональных данных злоумышленником, для дальнейшего их использования в мошеннических целях.

Браузеры, поддерживающие российские сертифицированные средства криптографической защиты:

  • Яндекс.Браузер версии 19.3. и выше
  • Спутник версии 4.1 и выше
  • Internet Explorer версии 11.0.9600 и выше
  • КриптоПРО CSP 5.0
  • ViPNet CSP Win 4.4 Windows RUS

Контроль использования российских сертифицированных средств криптографической защиты возлагается на клиентскую систему (КИС), являющуюся стороной, по средством которой пользователь инициирует процесс биометрической идентификации.

Базовая информация

Мы реализовали сервис интеграции с ЕСИА под Windows, используя КриптоПро CSP. В теории скорее всего можно это все аккуратно упаковать в docker и положить в Linux-образные системы, оставим это на откуп читателю. Для нас же актуальным стеком был следующий:

  • КриптоПро CSP, КриптоПро .Net
  • Сертификат с закрытым ключом, полученный при регистрации ИС в реестре ИС ЕСИА (на пункте 1 из Введения)

Каждый запрос в ЕСИА по соображениям безопасности дополняется полем client_secret, которое формируется как открепленная подпись 4 полей запроса в формате UTF-8:

  • Scope (Скоуп запроса, перечень данных, которые нужно получить из ЕСИА). Например, «fullname gender email mobile usr_org»
  • Timestamp (Текущие дата и время в формате «yyyy.MM.dd HH:mm:ss +0000»)
  • ClientId (Идентификатор ИС, который выдается при регистрации системы в ЕСИА)
  • State (Идентификатор текущего запроса, каждый раз генерируется как Guid.NewGuid().ToString(«D»))

Тут SignatureProvider – класс для реализации работы с сертификатами, он довольно просто реализуется. Для подписи использовался алгоритм ГОСТ – импортозамещение и все такое.

Шаг №5 — заполнение заявки на тестовую среду

Необходимо создать учетную запись организации через портал Госуслуг (см. раздел
3.2 Руководства ). Это может сделать
руководитель организации через сайт Госуслуг. Для этого он должен быть
зарегистрирован на госуслугах и иметь квалифицированную электронную подпись
(КЭП) юридического лица (в т.ч. это может быть подпись ЭП-СП).
За получением
средства КЭП нужно обратиться в один из аккредитованных Минкомсвязью России
удостоверяющих центров вашего региона.
Это может сделать
руководитель организации через сайт Госуслуг. Для этого он должен быть
зарегистрирован на госуслугах и иметь квалифицированную электронную подпись
(КЭП) юридического лица (в т.ч. это может быть подпись ЭП-СП).
За получением
средства КЭП нужно обратиться в один из аккредитованных Минкомсвязью России
удостоверяющих центров вашего региона. При невозможности получения КЭП в УЦ, необходимо обратиться в федеральное казначейство, ЦБ РФ или федеральную налоговую службу. В зависимости от типа организации.

Единая система идентификации и аутентификации Методические рекомендации по использованию Единой системы идентификации и аутентификации Версия 2.33

Схемы процесса взаимодействия между Клиентской ИС, ЕСИА Шлюзом и ЕСИА/ЕБС/ЦПГ

ЕСИА Шлюз не хранит персональные данные пользователей в базе данных. Передача персональных данных пользователя происходит через защищенный по https канал связи.

ЕСИА Шлюз хранит только транспортную информацию (scopes, redirect_uri, время запроса, авторизационный код ЕСИА) и SHA-512 от ФИО и СНИЛСа пользователя. Эти данные необходимы для обработки внештатных ситуаций, таких как составление заявки в службу поддержку ЕСИА и реагирование на запросы правоохранительных органов и не являются персональными данными.

Заключение

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

Оцените статью