Рекомендация: подборка платных и бесплатных курсов дизайна интерьера – https://katalog-kursov.ru/
В этой статье я напишу как я прикручивал ЕСИА к сайту, возможны и другие сценарии.
Первым делом надо создать сертификат для генерации подписи в формате pfx с закрытым ключом.
Для этого я использовал «PFX Certificate Generator». В настройках указывается служебная информация и информация для хеширования: sha256, длина ключа 2048.
После этого надо установить сертификат. Добавляем оснастку для сертификатов. открываем ветку «локальное хранилище», потом импортируем туда наш сгенеренный сертификат. Потом копируем его в ветку «Доверенные корневые».
После этого надо поставить к нему разрешение. В ветке «Личные» находим наш импортированный сертификат кликаем правой кнопкой мыши выбираем «Все задачи» потом «Управление закрытыми ключами». Далее добавляем разрешения на группу «Все».
После этого надо экспортировать наш сертификат в формате cer и передать в ЕСИА, там его зарегистрируют.
Вот в принципе и все. Один запрос, редирект + 2 запроса для получения маркера и информации о пользователе.
В дополнение можно проверять подпись маркера.
Сравнение вариантов подключения к ЕСИА
Сравнение вариантов подключения к ЕСИА
УниверсальностьИспользовать протоколы OpenID Connect / OAuth может система любой организации, которой разрешено подключение ЕСИА.
Поддержка ГОСТ-криптографииПри взаимодействии системы с ЕСИА можно использовать ГОСТ-криптографию и квалифицированные сертификаты электронной подписи, а не только зарубежный алгоритм RSA.
Актуальность получаемых сведенийСистема получает сведения о пользователе, актуальные на момент выполнения запроса к REST-сервисам ЕСИА.
Полнота получаемых сведенийСистема получает все сведения о пользователе, а не только те, что ассоциированы с ролью, выбранной пользователем в момент входа. Например, можно запросить список всех организаций, в которые включен пользователь ЕСИА.
Получение сведений оффлайнСистема может продолжать получать от ЕСИА данные о пользователе, даже когда пользователь завершает свою онлайн-сессию.
С использованием SAML
ОграниченностьСогласно регламенту Минкомсвязи использовать SAML для подключения к ЕСИА разрешено только системам органов власти и учреждениям, оказывающим государственные услуги.
Только зарубежная криптографияПри взаимодействии системы с ЕСИА можно использовать только RSA и только неквалифицированные сертификаты.
Неактуальные сведенияСистема получает сведения о пользователе, актуальные на момент самой первой аутентификации пользователя, а не на момент SSO-входа в приложение. В случае обновления пользователем сведений в ЕСИА в течение сессии эти изменения остаются невидимыми системам до момента перевхода пользователя.
Фрагментарность получаемых сведенийНе все сведения о пользователе можно получить по SAML. Получаемые сведения ограничены текущей ролью, выбранной пользователем при входе.
Получение сведений только онлайнСистема может получать от ЕСИА данные только в момент входа пользователя.
В 2017 году Минкомсвязь России внесла уточнение в регламент подключения к ЕСИА
С 01.01.2018 г. никакие системы больше не могут быть подключены к ЕСИА по протоколу SAML 2.0. Возможность использования этого протокола сохранится только для ранее подключенных систем. Для подключения к ЕСИА необходимо использовать протокол OAuth 2.0 / OpenID Connect.
Для подключения к ЕСИА с использованием протоколов OpenID Connect 1.0 / OAuth 2.0 рекомендуем воспользоваться ESIA-Bridge — нашим программным обеспечением, которое берет на себя все задачи по взаимодействию с ЕСИА в целях идентификации и аутентификации пользователей.
Получение данных об организациях возможно только при использовании offline-режима получения данных о пользователе. Этот процесс включает следующие шаги:
1. Проведение аутентификации пользователя с помощью offline-режима, по результатам которого у вызывающей системы будет следующая информация:
- идентификатор (oid) организации, по которой необходимо получить детальную информацию. Для получения oid можно воспользоваться блоком о ролях пользователя (roles), который доступен при наличии разрешения «Просмотр списка организаций пользователя» (usr_org);
- актуальное значение ключа доступа «scsToken».
2. Вызов специального сервиса ESIA-Bridge, позволяющего получить данные об организации. Для этого необходимо выполнить HTTP-запрос методом POST на адрес точки получения данных об организации (/blitz/bridge/organization). Особенности запроса:
- в теле (body) запроса необходимо указать параметры “token” (значение актуального ключа доступа), “oid” (идентификатор организации) и “redirect_url” (адрес обработчика успешной аутентификации на стороне вызывающей системы);
- в заголовке (http header) необходимо указать параметр “Content-Type” со значением “application/x-www-form-urlencoded”.
Пример запроса на получение данных об организации:
Возможные варианты ответа ESIA-Bridge на такой запрос:
Все, что требуется системе, – направить браузер пользователя по ссылке из ответа, указав корректный hostname ESIA-Bridge. Переход по этой ссылке инициирует в ЕСИА получение разрешения на доступ к данной организации. После того, как пользователь даст разрешение, ESIA-Bridge вернет пользователя по адресу, указанному в redirect_url и поставит новую сессионную cookie с новым ключом доступа tokenSCS. Получив обновленный ключ доступа, система должна повторно вызвать сервис получения данных об организации.
- если ключ доступа позволяет получить данные указанной организации, то в ответе будет получен json со следующими данными:
- обновленный ключ доступа scsToken, при этом старый ключ перестает действовать;
- сведения об организации согласно спецификациям ЕСИА.
Пример ответа, содержащего в себе данные организации, ее сотрудников и филиалов:
После получения ответа рекомендуется сохранить данные обновленного ключа доступа scsToken. Это позволит в будущем обновить данные об организации, ее сотрудниках и филиалах в offline-режиме, т.е. без участия пользователя.
Часто задаваемые вопросы (FAQ) по ЕСИА
- Необходимы ли административные привилегии для установки плагина?Административные привилегии при установке плагина не требуются, если плагин устанавливается для использования текущим пользователем. Если же в процессе установки плагина выбрана опция установки плагина для всех пользователей компьютера, то для продолжения установки будет необходимо ввести пароль администратора.
- Необходимо ли перезапускать браузер после установки плагина?Нет, при установке плагина не требуется перезапускать браузер и операционную систему. Если плагин корректно встроен на ваш веб-сайт, то веб-страница может проверить, установлен ли плагин, а также подсказать пользователю о необходимых действиях, связанных с его установкой.
- Мы хотели бы использовать ваш плагин на своем сайте. Можем ли мы предоставлять пользователям плагин для загрузки с нашего сайта? Возможно ли для нашей версии изменить название и логотип плагина?Да, если вы купили лицензию, вы можете использовать и распространять плагин с вашего веб-сайта. Вы также можете заказать выпуск специальной версии плагина, брендированной для вашей компании или вашего сайта. Свяжитесь с нами для получения дополнительной информации.
- Можно ли с вашим плагином использовать электронную подпись на смартфонах и планшетах?К сожалению, наш плагин работает только на компьютерах под управлением операционных систем Windows, macOS и Linux (Linux Ubuntu 14/16, Linux Fedora 23, Linux Mint 17/18, CentOS и др.). Операционные системы мобильных устройств, такие как IOS и Android, не поддерживаются.
- Ваш плагин не поддерживает мой тип ключей. Можно ли добавить мой токен в число поддерживаемых?Пожалуйста, обратитесь к нами с использованием формы обратной связи. Сообщите нам имя токена и его производителя. Мы сообщим, сможем ли поддержать запрошенный тип ключей.
- Будет ли плагин работать со старыми версиями браузера Firefox, в том числе действующим ESR-релизом?Да, Blitz Smart Card Plugin совместим как со старыми версиями Firefox, использующими NPAPI, так и новыми версиями Firefox (версия 52 и новее), работающими через Native Messaging API. Поставляющийся с плагином JavaScript проверяет версию Firefox, установленного у пользователя, и использует актуальный способ взаимодействия с плагином.
- Какие требования предъявляются к веб-сайту, чтобы он мог использовать функции подписания документов?Blitz Smart Card Plugin — это клиентское программное обеспечение. Это означает, что браузер сможет вызывать функции работы с электронной подписью только после установки на машину пользователя специального плагина. Вместе с плагином предоставляется JavaScript, который должен быть встроен на сайт для возможностей использования функций электронной подписи.
Единая система идентификации и аутентификации
- Нужно ли приобретать отдельные лицензии для тестовых сред?Не нужно. В зависимости от приобретенного пакета лицензий вам доступна возможность использовать Blitz Identity Provider не только на доменах ПРОД‑среды, но и на определенном количестве ТЕСТ‑сред.
- Ограничивается ли срок действия приобретенных лицензий?Приобретаемые лицензии бессрочны — приобретаются один раз и на все время. Также при желании можно отдельно приобрести услуги годовой технической поддержки программного обеспечения.
- Можно ли добавить в продукт необходимую нам функцию?Да, мы развиваем Blitz Identity Provider, ориентируясь прежде всего на пожелания наших клиентов и пользователей. Напишите нам, какая функция вам необходима. Возможно что решение вашей задачи уже предусмотрено иным способом, и мы подскажем, как это можно настроить и использовать, либо мы включим нужную вам функцию в план разработки.
- Сколько лицензий необходимо в случае подключения сайта и мобильного приложения?Если сайт и мобильное приложение архитектурно представляют собой одну систему, то они могут использовать общие параметры подключения и регистрироваться в Blitz Identity Provider как одно приложение (использовать общую лицензию). Если же сайт и мобильное приложение представляют собой архитектурно две разные системы, то они должны регистрироваться в Blitz Identity Provider как два разных приложения, каждое со своими настройками подключения, и использовать в этом случае две лицензии.