© 2014 - 2024 esia.pro
Инструкция по интеграции модуля авторизации через ЕСИА (Wordpress)
1 Общее описание
Модуль авторизации для CMS WordPress реализует набор функций написанных на языке программирования PHP и позволяющих организовывать взаимодействие с сервисами Единой системы идентификации и аутентификации (ЕСИА) по протоколу OAuth 2.0. Подробную информацию о данном протоколе и принципах взаимодействия с ЕСИА можно получить в методических рекомендациях по использованию ЕСИА Важно учесть, что модуль авторизации поставляется в 2-х версиях базовой и расширенной. Основным отличием расширенной версии от базовой является возможность получения дополнительного набора сведений о пользователе (см. Приложение Б - Перечень запрашиваемых областей доступа). Условия поставки базовой или расширенной версии необходимо обговаривать заранее с Вашим персональным менеджером.
2 Перечень поставляемых файлов
В состав поставляемых файлов входят следующие:
icons
– содержит файлы изображений;lib
– директория библиотеки авторизации через ЕСИА;ib/OAuth2
– директория, в которой содержатся файлы библиотеки авторизации;lib/Keys
– директория, в которой должны размещаться ключ и сертификат ИС (генерируются на стороне клиента ЕСИА);lib/Temp
– директория, в которую модуль кладет временные файлы;lib/Log
– директория лог-файлов.log
– директория содержит логи модуля;login-esia.php
– функции, реализующие авторизационную логику модуля;register.php
– функции, реализующие логику регистрации пользователей;rnds-oauth.css
– стили интерфейсной части модуля;rnds-oauth.js
– сценарии клиентской части модуля;rnds-oauth.php
– функции, реализующие хуки для WordPress;rnds-oauth-settings.php
– разметка для отображения формы с параметрами модуля в панели управления;uninstall.php
– сценарий удаления связанных с модулем данных из базы WordPress.
3 Функции модуля
Основными функциями модуля авторизации являются: - получение авторизационного кода ЕСИА; - обмен авторизационного кода на маркер доступа; - получение данных пользователя из ЕСИА (в приложении Б перечислены скоупы, которые может получать модуль); - выход (логаут) на стороне ЕСИА. Дополнительными функциями модуля авторизации являются: - создание учётных записей пользователей WordPress; - авторизация пользователей в WordPress; - назначение пользователю WordPress определённой роли.
4 Интеграция модуля
Перед началом интеграции необходимо: - выполнить конфигурирование OpenSSL, подключив gost-engine с поддержкой алгоритмов ГОСТ Р 34.10-2012 и ГОСТ Р 34.11- 2012; - настроить для вашей системы HTTPS (это обязательное требование, поскольку данные между вашей системой и ЕСИА передаются в открытом виде); - выполнить экспорт ключевой пары (сформированной по ГОСТ2012) из криптоконтейнера (экспорт можно сделать с помощью нашей утилитой); - настроить систему на технологическом портале тестовой/промышленной ЕСИА. На технологическом портале в окне редактирования параметров системы указать URL возврата после авторизации и логаута, а также установить алгоритм подписания запросов GOST3410_2012_256.
Для интеграции модуля необходимо выполнить шаги описанные ниже.
Шаг 0. Установить необходимые зависимости, описанные в разделе 5.
Шаг 1. Для установки модуля необходимо в административной панели управления перейти в раздел Плагины.
По нажатию на кнопку Добавить новый появиться форма в которой необходимо нажать кнопку Загрузить плагин и затем, на появившейся форме, кликнуть по кнопке Выберите файл и в появившемся диалогом окне выбрать tar.gz архив с модулем авторизации.
Далее нажимаем кнопку Установить.
После установки модуля в общем списке модулей появится модуль RNDS-OAuth
Шаг 2. Далее необходимо кликнуть по ссылке Активировать
Шаг 3. После активации модуля необходимо выполнить его конфигурирование. Для этого кликаем Settings (см. ниже на рисунке)
В форме конфигурирования модуля в разделе General settings необходимо заполнить следующие поля:
В форме конфигурирования модуля в разделе Основные настройки необходимо задать значения для следующих полей:
- “Показывать уведомления”
– данный флажок следует установить при необходимости отображать в пользовательском интерфейсе уведомления о ходе процесса авторизации;
- “После авторизации перенаправить на”
– URL клиентской системы, на который будет осуществляться переход после авторизации пользователя на стороне ЕСИА (при этом адрес перехода должен присутствовать в списке доверенных URL’ов системы в её настройках на технологическом портале тестовой/промышленной ЕСИА);
- “После логаута перенаправлять на”
– URL клиентской системы, на который будет осуществляться переход после логаута пользователя на стороне ЕСИА (при этом адрес перехода должен присутствовать в списке доверенных URL’ов системы в её настройках на технологическом портале тестовой/промышленной ЕСИА);
- “Выполнять автоматический логаут пользователя”
– задаёт временной период в течении которого будет активна пользовательская сессия на стороне клиентской системы.
В форме конфигурирования модуля в разделе Регистрация пользователей можно указать роль пользователя, которая будет автоматически назначаться при регистрации.
В форме конфигурирования модуля в разделе Login with ESIA необходимо заполнить следующие поля:
- “Активна”
– сделать авторизацию через ЕСИА активной/деактивировать;
- “URL ЕСИА”
– URL тестовой/промышленной ЕСИА;
- “Скоупы”
– указываемый перечень scope (областей доступа) должен соответствовать списку scope, указанному в заявке на подключение к тестовой/промышленной ЕСИА;
- “Мнемоника”
– уникальный идентификатор системы, который был указан в заявках на подключение к тестовой/промышленной ЕСИА;
- “Секрет”
– уникальная цифро-буквенная последовательность, необходимая для вычисления хэшей паролей;
- “Отладка”
– на этапе интеграции часто требуются логи модуля. Данный флажок в установленном состоянии позволяет модулю добавлять записи в системный лог Drupal;
- “Разрешать непроверенные данные в УЗ”
- разрешать авторизацию пользователям с непроверенными данными учётной записи ЕСИА.
В форме конфигурирования модуля в разделе Back channel configuration необходимо заполнить следующие поля:
- “Передавать запросы используя”
– определяет метод, используемый веб-сервером для выполнения HTTP-запросов к сторонним поставщикам. Большинство серверов поддерживают cURL, но для некоторых серверов вместо этого может потребоваться Stream Context;
- “Проверять peer/host SSL сертификаты”
– определяет, следует ли проверять SSL-сертификаты во время HTTP-вызовов. Если ваш сервер имеет неправильную конфигурацию SSL или не поддерживает SSL, вы можете попробовать отключить этот параметр в качестве временного решения.
ВАЖНО Для обеспечения необходимого уровня безопасности параметр “Проверять peer/host SSL сертификаты” должен быть включенным. Если при включении параметра возникает ошибка соединения - необходимо как можно скорее исправить конфигурацию SSL вашего сервера и оставить этот параметр.
В форме конфигурирования модуля в разделе ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ И УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ при необходимости можно использовать следующие опции:
- “Восстановление настроек по-умолчанию”
– позволяет восстановить настроечные значения по-умолчанию. ВАЖНО При этом все значения параметров, установленные на текущий момент будут потеряны;
- “Удалить настройки при деинсталяции”
– позволяет удалить все записи из базы данных, связанные с работой модуля. ВАЖНО После удаления авторизация через ЕСИА будет не доступна, хотя все ранее созданные учётные записи пользователей останутся.
После активации и конфигурирования модуля на форме авторизации появится кнопка “Авторизация через ЕСИА”.
Шаг 4. Далее необходимо добавить разделы, которые были указаны в полях “Login redirects to” и “Logout redirects to”. Эти разделы необходимы для выполнения редиректа с портала госуслуг, после авторизации и логаута соответственно, на сторону клиентской ИС. ВАЖНО Если ссылка на авторизацию размещается в одном из блоков, загружаемых во всех общедоступных разделах сайта, то размещать эту ссылку отдельно в разделе, указанном в “Login redirects to” и “Logout redirects to”, не нужно. Чтобы разместить ссылку «Авторизоваться через ЕСИА» в основном меню необходимо в панели администрирования перейти в раздел Внешний вид –> Меню.
Выбрать меню для изменения - “Основное меню” и кликнуть по кнопке “Выбрать”.
Далее, на форме добавления меню выбрать “Произвольные ссылки” и заполнить поля URL и Текст ссылки, как это показано ниже. В поле URL ввести ?connect=esia, а в поле “Текст ссылки” - “Авторизоваться через ЕСИА”. Далее кликнуть по “Добавить в меню”.
В результате в структуре меню появится элемент “Авторизоваться через ЕСИА”.
Теперь нужно кликнуть по “Сохранить меню”.
После этого в главном меню сайта появится авторизация через ЕСИА.
При клике по ссылке «Авторизоваться через ЕСИА» осуществляется переход на портал госуслуг. После авторизации на портале ЕСИА выполняет редирект обратно в клиентскую ИС. В результате пользователь попадает на страницу указанную в параметрах модуля в «Logout redirects to».
Чтобы просмотреть информацию о пользователе необходимо перейти в профиль пользователя wp-admin/profile.php
Также, данные пользователя можно увидеть в панели администрирования.
Перейдя в раздел “Пользователи” –> “Все пользователи” и выбрав из списка нужного пользователя.
При клике по соответствующему элементу будет загружена страница с данными пользователя.
5 Зависимости
Модуль авторизации предъявляет следующие требования к среде исполнения требования к версии CMS WordPress
WordPress 5 или выше
языковые требования
PHP 5.5 или выше
В окружении модуля авторизации должна присутствовать утилита которую можно вызвать посредством системного вызова.
OpenSSL v.1.1.x
OpenSSL должна поддерживать алгоритмы ГОСТ2012. Для этого необходимо установить расширение
Gost-engine
Для работы модуля авторизации необходимо:
- наличие активной компоненты openssl;
- наличие активной компоненты json;
- наличие активной компоненты curl;
- наличие активной компоненты posix;
ПРИЛОЖЕНИЕ А
Перечень запрашиваемых областей доступа
Модуль авторизации в базовой и расширенной версии запрашивает доступ к разным наборам областей данных (scope) и как следствие получает разные наборы сведений о пользователе. Перечень областей данных (scope) для базовой версии модуля приведён в таблице А.1, а для расширенной версии в таблице А.2.
Таблица А.1 - Перечень запрашиваемых областей доступа в базовой версии библиотеки
№ | Название scope | Состав набора данных | Запрашивается(+)/Не запрашивается(-) |
---|---|---|---|
1. | fullname | Просмотр фамилии, имени и отчества: - фамилия; - имя; - отчество. |
+ |
2. | birthdate | дата рождения, указанная в учетной записи | + |
3. | gender | пол, указанный в учетной записи | + |
4. | snils | СНИЛС, указанный в учетной записи | + |
5. | inn | ИНН, указанный в учетной записи | + |
6. | id_doc | Просмотр данных о документе, удостоверяющем личность: - серия и номер документа, удостоверяющего личность; - дата выдачи; - кем выдан; - код подразделения; - гражданство. |
+ |
7. | birthplace | место рождения. | + |
Таблица А.2 - Перечень запрашиваемых областей доступа в расширенной версии библиотеки
№ | Название 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 | Просмотр данных заграничного паспорта: - фамилия, имя, отчество буквами латинского алфавита; - серия и номер заграничного паспорта; - дата выдачи; - срок действия; - орган, выдавший документ; - гражданство. |
- |
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 | Данные присвоенных организации видовдеятельности | - |