Skip to content

Пример интеграции с сервисом ЕСИА (Госуслуги)

Notifications You must be signed in to change notification settings

sasergeev/esia-integration-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Пример интеграции с сервисом ЕСИА (Госуслуги) без использования криптопровайдера КриптоПро CSP. Для использования сервиса предполагается пройти следующие шаги:

1.Регистрация ИС Организации на Технологическом портале ЕСИА

Необходимо пройти регистрацию информационной системы организации на Технологическом портале. Подробнее обо всех этапах регистрации здесь!

2.Подготовка ЭЦП для работы с порталом

ЕСИА поддерживает ключи с алгоритмом шифрования ГОСТ-2012, которые подразумевают работу с помощью криптопровайдера КриптоПро CSP. Тогда как в данном случае используется альтернативный вариант c использованием стандарта PKCS#12. Для этого необходимо проделать следующие действия:

  • Использовать ключ ЭЦП, выданный Компании для работы с государственными сервисами или отправки отчетности.
  • Скопировать контейнер на диск доступный в системе, например, диск С, в результате получится папка вида folder.000 с файлами *.key (Примечание: Если возможность копирования контейнера заблокирована издателем, то можно воспользоваться утилитами для разблокировки этой функции, например, CertFix)
  • Клонировать репозиторий с https://github.com/kov-serg/get-cpcert и собрать билд согласно инструкции в описании. Скопировать папку с ключами в директорию с утилитой. Выполнить:
 ./get-cpcert folder.000 12345678 > bundle.pem

folder.000 – папка с ключами, 12345678 — пароль по умолчанию от контейнера или другой, установленный при копировании контейнера, bundle.pem – файл, содержащий закрытй и публичный ключи(результат работы утилиты).

  • Открыть файл bundle.pem и скопировать содержимое строк -----BEGIN PRIVATE KEY----- и-----END PRIVATE KEY-----, а также -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- сохранив при этом в разные файлы соотвественно - private.key и public.cer.
  • Файл public.cer необходимо загрузить в ЛК технологического портала - раздел Сертификаты.
  • Файлы — private.key и public.cer, необходимо сохранить в единый контейнер PFX, используя утилиту OpenSSL. ВАЖНО Перед использованием утилиты OpenSSL, проверить поддержку алгоритмов ГОСТ:
openssl engine gost -c
(gost) Reference implementation of GOST engine
 [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cb
c, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, md_gost94, gost-mac, md_go
st12_256, md_gost12_512, gost-mac-12, gost2001, gost-mac, gost2012_256, gost2012
_512, gost-mac-12]

openssl pkcs12 -export -in public.cer -inkey private.key -out bundle.pfx -name "esia"

Параметр name устанавливает алиас контейнера, а так же при сохранении файла необходимо задать пароль

3.Настройка и запуск

  • Скопировать bundle.pfx в src/main/resources/
    application.properties
  • esia.key-alias=[алиас PFX контейнера]
  • esia.keystore-password=[пароль PFX контейнера]
  • esia.client-id=[мнемоника ИС из ЛК]
  • esia.scope=[scope ИС] - openid fullname id_doc...
  • esia.redirect-base-url=[адрес для редиректа] - https://your-domain.com (Должен быть добавлен в ЛК Технологического портала - URL системы)
  • esia.redirect-uri-ac=[точка для роутинга] - /esia/auth
  • esia.redirect-uri-te=[точка для роутинга] - /esia/done?
mvn clean compile package
java -jar esia-service-1.0.jar

4.Использование

GET http://localhost:8888/esia/login - получить страницу авторизации на сайте Госуслуги

4.Ошибки

ESIA-007019 (invalid_scope) - причина в указанных scope, которые недоступны для ИС Организации

Disclaimer

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

About

Пример интеграции с сервисом ЕСИА (Госуслуги)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages