img3

© 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.

img1

img2

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

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

Шаг 0. Установить необходимые зависимости, описанные в разделе 5.

Шаг 1. Для установки модуля необходимо в административной панели управления перейти в раздел Extend.

img3

По нажатию на кнопку Install new module появиться форма, в которой необходимо нажать кнопку Выберите файл и в диалоговом окне выбрать файл являющийся архивом tar.gz.

img4

Далее нажимаем кнопку Install. После установки модуля в общем списке модулей появится ESIA integration

Шаг 2. Подключаем модуль (при необходимости устанавливаем дополнительные модули (из списка Requires), например, Profile)

img5

img6

img7

Устанавливаем элемент CheckBox в состояние Checked и нажимаем кнопку Install.

img8

Шаг 3. После того как модуль подключен необходимо выполнить его конфигурирование. Для этого кликаем Configure (см. ниже на рисунке)

img9

В форме конфигурирования модуля необходимо заполнить следующие поля:

  • “URL провайдера идентификации” – URL тестовой/промышленной ЕСИА;
  • “Мнемоника ИС” – уникальный идентификатор системы, который был указан в заявках на подключение к тестовой/промышленной ЕСИА;
  • “URL клиентской ИС для перехода после авторизации на стороне ЕСИА” – URL клиентской системы, на который будет осуществляться переход после авторизации пользователя на стороне ЕСИА (при этом URL перехода должен присутствовать в списке доверенных URL’ов системы в настройках системы на технологическом портале тестовой/промышленной ЕСИА);
  • “URL клиентской ИС для перехода после логаута на стороне ЕСИА” – URL клиентской системы, на который будет осуществляться переход после логаута пользователя на стороне ЕСИА (при этом URL перехода должен присутствовать в списке доверенных URL’ов системы в настройках системы на технологическом портале тестовой/промышленной ЕСИА);
  • “URL раздела для перехода в случае отказа в авторизации” – URL клиентской системы, на который будет осуществляться внутренний переход в случае отказа в авторизации пользователю по причине не подтверждённости сведений, содержащихся в его учётной записи на стороне ЕСИА;
  • “Список запрашиваемых областей доступа” – указываемый перечень scope (областей доступа) должен соответствовать списку scope, указанному в заявке на подключение к тестовой/промышленной ЕСИА;
  • “Закрытая(приватная) часть ключа ИС” – содержит путь к файлу secret.key (ключ в PEM формате);
  • “Открытая(публичная) часть ключа ИС” – содержит путь к файлу cert.crt (сертификат в PEM формате);

img10

  • “Полный путь к утилите openssl (для ОС Windows)” – поле заполняется только в случае, когда Drupal запускается под ОС Windows и OpenSSL устанавливается в среду исполнения как отдельное приложение;
  • “Использовать curl” – по-умолчанию модуль передаёт/принимает запросы в потоковом режиме, но в некоторых случаях PHP-машина сконфигурирована так, что этот режим использовать невозможно из-за возникающих ошибок. В этом случае необходимо установить данный флажок и при необходимости сконфигурировать компоненты cURL (указана в списке зависимостей);
  • “Отображать на форме авторизации” – при необходимости отображать кнопку авторизации через ЕСИА данный флажок должен быть установлен. В этом случае кнопка авторизации будет отображаться только в тех разделах, где Вы её разместите;
  • “Включить режим отладки для работы модуля” – на этапе интеграции часто требуются логи модуля. Данный флажок в установленном состоянии позволяет модулю добавлять записи в системный лог Drupal.

После конфигурирования модуля можно перейти в общедоступную часть сайта и убедится, что ссылка «Login via ESIA» для авторизации через ЕСИА появилась на форме авторизации.

img11

Шаг 4. Далее необходимо добавить разделы, которые были указаны в полях «URL клиентской ИС для перехода после авторизации на стороне ЕСИА» и «URL клиентской ИС для перехода после логаута на стороне ЕСИА». Эти разделы необходимы для выполнения редиректа с портала госуслуг, после авторизации и логаута соответственно, на сторону клиентской ИС.

Важно! Если ссылка на авторизацию размещается в одном из блоков, загружаемых во всех общедоступных разделах сайта, то размещать эту ссылку отдельно в разделе, указанном в «URL клиентской ИС для перехода после авторизации на стороне ЕСИА» и «URL клиентской ИС для перехода после логаута на стороне ЕСИА», не нужно.

Чтобы разместить ссылку «Login via ESIA» в другом месте (не только в форме авторизации) необходимо использовать «Place block». Для этого в панели администрирования переходим в раздел Structure.

img12

Далее переходим в Block Layout и выбираем блок, в котором необходимо разместить ссылку «Login via ESIA».

img13

Например, это может быть Header. Кликаем кнопку Place block для блока Header.

img14

В появившемся окне выбираем из списка Esia login block и нажимаем кнопку Place block. Далее, во вновь появившемся окне указываем параметры размещения компоненты и нажимаем кнопку Save block.

img15

После успешного конфигурирования блока появится сообщение The block configuration has been saved.

img16

После этого в заголовке сайта рядом со стандартной авторизацией появится авторизация через ЕСИА.

img17

При клике по ссылке «Login via ESIA» осуществляется переход на портал госуслуг. После авторизации на портале ЕСИА выполняет редирект обратно в клиентскую ИС. В результате пользователь попадает на страницу, указанную в параметрах модуля в «URL клиентской ИС для перехода после авторизации на стороне ЕСИА».

img18

Чтобы просмотреть информацию о пользователе необходимо перейти по ссылке My account, расположенной в заголовке сайта.

img19

Также данные пользователя можно увидеть в панели администрирования перейдя в раздел People и выбрав из списка нужного пользователя.

img20

При клике по соответствующему элементу будет загружена страница с данными пользователя.

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

5 Зависимости

Модуль авторизации предъявляет следующие требования к среде исполнения

требования к версии CMS Drupal

Drupal 8

языковые требования

PHP 5.5

В окружении модуля авторизации должна присутствовать утилита

OpenSSL v.1.1.x

которую можно вызвать посредством системного вызова.

OpenSSL должна поддерживать алгоритмы ГОСТ2012. Для этого необходимо установить расширение

Gost-engine

Для работы модуля авторизации необходимо:

  • наличие активной компоненты openssl;

img21

  • наличие активной компоненты json;

img22

  • наличие активной компоненты curl.

img23

  • наличие активной компоненты posix;

img24

Для модуля авторизации установлены следующие внутрисистемные зависимости 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. email адрес электронной почты, указанный в учетной записи +
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 Данные присвоенных организации видов деятельности -
  • Модуль авторизации через ЕСИА (Drupal)
  • 1 Общее описание
  • 2 Перечень поставляемых файлов
  • 3 Функции модуля
  • 4 Интеграция модуля
  • 5 Зависимости
  • ПРИЛОЖЕНИЕ А Перечень запрашиваемых областей доступа