© 2014 - 2024 esia.pro
Модуль авторизации через ЕСИА (Drupal)
1 Общее описание
Модуль авторизации для CMS Drupal реализует набор функций написанных на языке программирования PHP и позволяющих организовывать взаимодействие с сервисами Единой системы идентификации и аутентификации (ЕСИА) по протоколу OAuth 2.0. Подробную информацию о данном протоколе и принципах взаимодействия с ЕСИА можно получить в методических рекомендациях по использованию ЕСИА
Важно учесть, что модуль авторизации может получать набора сведений о пользователе указанный в Приложение А - Перечень запрашиваемых областей доступа. Если требуется расширенный набор данных, то это необходимо обговаривать заранее с Вашим персональным менеджером.
2 Перечень поставляемых файлов
В состав файлов, поставляемых с модулем, входят следующие:
- esia_authorization.install – удаляет зависимые элементы из базы данных при удалении модуля;
- esia_authorization.module – рендеринг формы авторизации через ЕСИА;
- esia_authorization.info.yml – информация о модуле;
- esia_authorization.links.menu.yml – описание для линка в меню панели управления;
- esia_authorization.permissions.yml – права доступа к функциональности модуля;
- esia_authorization.routing.yml – маршрутизация для вызова методов контроллера модуля;
- esia_authorization.services.yml – информация для регистрации класса сервиса;
- config –описание свойств полей, используемых в интерфейсе модуля;
- src – код реализации классов модуля;
- Controller/Login.php – реализует основную логику работы модуля авторизации;
- Form/EsiaConfigForm.php – формирует форму редактирования параметров компоненты в панели управления;
- Lib – директория библиотеки авторизации через ЕСИА;
- Plugin/Block/LoginBlock.php – формирует блок с интерфейсом модуля;
- Routing/EsiaRoutes.php – формирует роуты для вызова методов контроллера;
- Temp – директория, в которую модуль кладет временные файлы;
- EsiaService.php – подключает функциональность библиотеки.
3 Функции модуля
Основными функциями модуля авторизации являются:
- получение авторизационного кода ЕСИА;
- обмен авторизационного кода на маркер доступа;
- получение данных пользователя из ЕСИА (в приложении Б перечислены скоупы, которые может получать модуль);
- выход (логаут) на стороне ЕСИА.
Дополнительными функциями модуля авторизации являются:
- создание учётных записей пользователей Drupal;
- авторизация пользователей в Drupal;
- назначение пользователю Drupal определённой роли.
4 Интеграция модуля
Перед началом интеграции необходимо:
- выполнить конфигурирование OpenSSL, подключив gost-engine с поддержкой алгоритмов ГОСТ Р 34.10-2012 и ГОСТ Р 34.11- 2012;
- настроить для вашей системы HTTPS (это обязательное требование, поскольку данные между вашей системой и ЕСИА передаются в открытом виде);
- выполнить экспорт ключевой пары (сформированной по ГОСТ2012) из криптоконтейнера (экспорт можно сделать с помощью нашей утилиты);
- настроить систему на технологическом портале тестовой/промышленной ЕСИА. На технологическом портале в окне редактирования параметров системы (см. рисунок 1) указать URL возврата после авторизации и логаута, а также установить алгоритм подписания запросов GOST3410_2012_256.
Поля в окне редактирования параметров системы
Для интеграции модуля необходимо выполнить шаги описанные ниже.
Шаг 0. Установить необходимые зависимости, описанные в разделе 5.
Шаг 1. Для установки модуля необходимо в административной панели управления перейти в раздел Extend.
По нажатию на кнопку Install new module появиться форма, в которой необходимо нажать кнопку Выберите файл и в диалоговом окне выбрать файл являющийся архивом tar.gz.
Далее нажимаем кнопку Install. После установки модуля в общем списке модулей появится ESIA integration
Шаг 2. Подключаем модуль (при необходимости устанавливаем дополнительные модули (из списка Requires), например, Profile)
Устанавливаем элемент CheckBox в состояние Checked и нажимаем кнопку Install.
Шаг 3. После того как модуль подключен необходимо выполнить его конфигурирование. Для этого кликаем Configure (см. ниже на рисунке)
В форме конфигурирования модуля необходимо заполнить следующие поля:
- “URL провайдера идентификации” – URL тестовой/промышленной ЕСИА;
- “Мнемоника ИС” – уникальный идентификатор системы, который был указан в заявках на подключение к тестовой/промышленной ЕСИА;
- “URL клиентской ИС для перехода после авторизации на стороне ЕСИА” – URL клиентской системы, на который будет осуществляться переход после авторизации пользователя на стороне ЕСИА (при этом URL перехода должен присутствовать в списке доверенных URL’ов системы в настройках системы на технологическом портале тестовой/промышленной ЕСИА);
- “URL клиентской ИС для перехода после логаута на стороне ЕСИА” – URL клиентской системы, на который будет осуществляться переход после логаута пользователя на стороне ЕСИА (при этом URL перехода должен присутствовать в списке доверенных URL’ов системы в настройках системы на технологическом портале тестовой/промышленной ЕСИА);
- “URL раздела для перехода в случае отказа в авторизации” – URL клиентской системы, на который будет осуществляться внутренний переход в случае отказа в авторизации пользователю по причине не подтверждённости сведений, содержащихся в его учётной записи на стороне ЕСИА;
- “Список запрашиваемых областей доступа” – указываемый перечень scope (областей доступа) должен соответствовать списку scope, указанному в заявке на подключение к тестовой/промышленной ЕСИА;
- “Закрытая(приватная) часть ключа ИС” – содержит путь к файлу secret.key (ключ в PEM формате);
- “Открытая(публичная) часть ключа ИС” – содержит путь к файлу cert.crt (сертификат в PEM формате);
- “Полный путь к утилите openssl (для ОС Windows)” – поле заполняется только в случае, когда Drupal запускается под ОС Windows и OpenSSL устанавливается в среду исполнения как отдельное приложение;
- “Использовать curl” – по-умолчанию модуль передаёт/принимает запросы в потоковом режиме, но в некоторых случаях PHP-машина сконфигурирована так, что этот режим использовать невозможно из-за возникающих ошибок. В этом случае необходимо установить данный флажок и при необходимости сконфигурировать компоненты cURL (указана в списке зависимостей);
- “Отображать на форме авторизации” – при необходимости отображать кнопку авторизации через ЕСИА данный флажок должен быть установлен. В этом случае кнопка авторизации будет отображаться только в тех разделах, где Вы её разместите;
- “Включить режим отладки для работы модуля” – на этапе интеграции часто требуются логи модуля. Данный флажок в установленном состоянии позволяет модулю добавлять записи в системный лог Drupal.
После конфигурирования модуля можно перейти в общедоступную часть сайта и убедится, что ссылка «Login via ESIA» для авторизации через ЕСИА появилась на форме авторизации.
Шаг 4. Далее необходимо добавить разделы, которые были указаны в полях «URL клиентской ИС для перехода после авторизации на стороне ЕСИА» и «URL клиентской ИС для перехода после логаута на стороне ЕСИА». Эти разделы необходимы для выполнения редиректа с портала госуслуг, после авторизации и логаута соответственно, на сторону клиентской ИС.
Важно! Если ссылка на авторизацию размещается в одном из блоков, загружаемых во всех общедоступных разделах сайта, то размещать эту ссылку отдельно в разделе, указанном в «URL клиентской ИС для перехода после авторизации на стороне ЕСИА» и «URL клиентской ИС для перехода после логаута на стороне ЕСИА», не нужно.
Чтобы разместить ссылку «Login via ESIA» в другом месте (не только в форме авторизации) необходимо использовать «Place block». Для этого в панели администрирования переходим в раздел Structure.
Далее переходим в Block Layout и выбираем блок, в котором необходимо разместить ссылку «Login via ESIA».
Например, это может быть Header. Кликаем кнопку Place block для блока Header.
В появившемся окне выбираем из списка Esia login block и нажимаем кнопку Place block. Далее, во вновь появившемся окне указываем параметры размещения компоненты и нажимаем кнопку Save block.
После успешного конфигурирования блока появится сообщение The block configuration has been saved.
После этого в заголовке сайта рядом со стандартной авторизацией появится авторизация через ЕСИА.
При клике по ссылке «Login via ESIA» осуществляется переход на портал госуслуг. После авторизации на портале ЕСИА выполняет редирект обратно в клиентскую ИС. В результате пользователь попадает на страницу, указанную в параметрах модуля в «URL клиентской ИС для перехода после авторизации на стороне ЕСИА».
Чтобы просмотреть информацию о пользователе необходимо перейти по ссылке My account, расположенной в заголовке сайта.
Также данные пользователя можно увидеть в панели администрирования перейдя в раздел People и выбрав из списка нужного пользователя.
При клике по соответствующему элементу будет загружена страница с данными пользователя.
Важно! Если планируется, что возврат после выполнения процедуры логаута на стороне ЕСИА, будет происходить в строго заданный раздел, то необходимо, чтобы URL этого раздела соответствовал значению поля “URL системы”, указанному в личном кабинете на технологическом портале ЕСИА или был его подстрокой. В случае, когда URL возврата после авторизации и после логаута разные необходимо оба добавить на технологическом портале.
5 Зависимости
Модуль авторизации предъявляет следующие требования к среде исполнения
требования к версии CMS Drupal
Drupal 8
языковые требования
PHP 5.5
В окружении модуля авторизации должна присутствовать утилита
OpenSSL v.1.1.x
которую можно вызвать посредством системного вызова.
OpenSSL должна поддерживать алгоритмы ГОСТ2012. Для этого необходимо установить расширение
Gost-engine
Для работы модуля авторизации необходимо:
- наличие активной компоненты openssl;
- наличие активной компоненты json;
- наличие активной компоненты curl.
- наличие активной компоненты posix;
Для модуля авторизации установлены следующие внутрисистемные зависимости Profile, Entity, User, System, Field, Views, Filter. В случае отсутствия одного из модулей, от которого зависит работа модуля авторизации, этот модуль должен быть установлен.
ПРИЛОЖЕНИЕ А
Перечень запрашиваемых областей доступа
Перечень запрашиваемых областей данных (scope) приведён в таблице А.1.
Таблица А.1 - Перечень запрашиваемых областей доступа
№ | Название scope | Состав набора данных | Запрашивается(+)/Не запрашивается(-) |
---|---|---|---|
1. | fullname | Просмотр фамилии, имени и отчества: • фамилия; • имя; • отчество. |
+ |
2. | birthdate | дата рождения, указанная в учетной записи | - |
3. | gender | пол, указанный в учетной записи | - |
4. | snils | СНИЛС, указанный в учетной записи | + |
5. | inn | ИНН, указанный в учетной записи | + |
6. | id_doc | Просмотр данных о документе, удостоверяющем личность: • серия и номер документа, удостоверяющего личность; • дата выдачи; • кем выдан; • код подразделения; • гражданство. |
- |
7. | birthplace | место рождения. | - |
8. | medical_doc | Просмотр данных полиса ОМС: • номер полиса ОМС; • срок действия. |
- |
9. | military_doc | Просмотр данных военного билета: • серия и номер военного билета; • дата выдачи; • орган, выдавший документ. |
- |
10. | foreign_passport_doc | Просмотр данных заграничного паспорта: • фамилия, имя, отчество буквами латинского алфавита;«br> • серия и номер заграничного паспорта; • дата выдачи; • срок действия; • орган, выдавший документ; • гражданство. |
- |
11. | drivers_licence_doc | Просмотр данных водительского удостоверения: • серия и номер водительского удостоверения • дата выдачи; • срок действия. |
- |
12. | birth_cert_doc | Просмотр данных свидетельства о рождении: • серия и номер свидетельства; • дата выдачи; • место государственной регистрации. |
- |
13. | residence_doc | Просмотр данных вида на жительство: • серия и номер вида на жительство; • дата выдачи. |
- |
14. | temporary_residence_doc | Просмотр данных разрешения на временное проживание: • серия и номер разрешения на временное проживание; • дата выдачи. |
- |
15. | vehicles | Просмотр данных транспортных средств: • государственный регистрационный знак; • серия и номер свидетельства о регистрации. |
- |
16. | адрес электронной почты, указанный в учетной записи | + | |
17. | mobile | номер мобильного телефона | + |
18. | contacts | Просмотр данных о контактах и адресах: • номер домашнего телефона; • номер мобильного телефона; • адрес электронной почты; • адрес регистрации; • адрес места проживания. |
- |
19. | usr_org | список организаций пользователя. | - |
20. | usr_avt | Просмотр изображения (аватара) пользователя: • получения изображения (аватара); • создание и обновление изображения (аватара); • получение исходного изображения (аватара) |
- |
21. | self_employed | Просмотр данных о самозанятых: • признак самозанятого; • категория (вид деятельности). |
- |
22. | kid_fullname | •Просмотр фамилии, имени и отчества: • фамилия; • имя; • отчество. |
- |
23. | kid_birthdate | дата рождения ребенка | - |
24.. | kid_gender | Пол ребенка | - |
25. | kid_snils | СНИЛС ребенка | - |
26. | kid_inn | ИНН ребенка | - |
27. | kid_birth_cert_doc | Просмотр данных свидетельства о рождении: • серия свидетельства; • номер свидетельства; • дата выдачи свидетельства; • кем выдано свидетельство. |
- |
28. | kid_medical_doc | Просмотр данных полиса ОМС: • номер полиса ОМС; • действителен до ОМС. |
- |
1. | org_shortname | Сокращенное наименование организации | - |
2. | org_fullname | Полное наименование организации | - |
3. | org_type | Тип организации | - |
4. | org_ogrn | ОГРН организации | - |
5. | org_inn | ИНН организации | - |
6. | org_leg | ОПФ организации | - |
7. | org_kpp | КПП организации | - |
8. | org_agencyterrange | Территориальная принадлежность ОГВ | - |
9. | org_agencytype | Тип ОГВ | - |
10. | org_oktmo | ОКТМО организации | - |
11. | org_ctts | Контакты организации: номер телефона, номер факса, адрес электронной почты | - |
12. | org_addrs | Адреса организации (почтовый адрес, юридический адрес): индекс, идентификатор страны, адрес в виде строки (не включая дом, строение, корпус, номер квартиры), строение, корпус, дом, квартира, код ФИАС, регион,город, внутригородской район, район, поселение, доп. территория, улица на доп. территории, улица | - |
13. | org_vhls | Транспортные средства организации: название, государственный регистрационный знак, серия и номер свидетельства о регистрации | - |
14. | org_grps | Группы, владельцем которых является организация | - |
15. | org_emps | Данные о сотрудниках организации | - |
16. | org_brhs | Данные о филиалах организации (название, КПП, ОПФ, контакты, адреса) | - |
17. | org_brhs_ctts | Контакты филиалов организации | - |
18. | org_brhs_addrs | Адреса филиалов организации | - |
19. | org_rcs | Центры регистрации организации | - |
20. | org_stms | Системы, владельцем которых является организация | - |
21. | org_invts | Приглашения, направленные организацией | - |
22. | categories | Данные присвоенных организации видов деятельности | - |