Найти в Дзене
ИТ Дилетант

Сквозная авторизация Bitrix24 и Moodle

Оглавление

В этой статье мы рассмотрим пример авторизации пользователей Битрикс24 в LMS Moodle через протокол OAuth 2.0 - открытый протокол авторизации, который позволяет предоставить третьей стороне ограниченный доступ к защищенным ресурсам без необходимости передавать данные авторизации (логин и пароль).

Итак, что мы имеем? С одной стороны, у нас есть лиды, то есть пользователи Битрикс24, которым требуется пройти обучение. С другой стороны, курсы с учебными материалами и аттестационными заданиями, размещенные в LMS Moodle. Задача заключается в том, чтобы интегрировать эти две системы, чтобы пользователи Битрикс24 могли авторизовываться в LMS Moodle и получать доступ к курсам.

Необходимое пояснение. Мы говорим только про единую авторизацию. Её можно настроить самостоятельно, не привлекая системных администраторов или программистов. Если же необходимо реализовать бесшовный переход между Битрикс24 и LMS Moodle, то понадобится полная реализация SSO (технология единого входа) с использованием соответствующего сервера или дополнений к Битрикс24.

Настройка Bitrix24

Все настройки будем делать на бесплатной версии Битрикс24. Чтобы её получить необходимо заполнить короткую форму на сайте и пройти несколько простых шагов. После завершения регистрации не забудьте активировать ДЕМО-Тариф и вы получите доступ к основному функционалу Битрикс24, которым можно пользоваться бесплатно в течение 14 дней.

Разверните левое меню и перейдите в раздел Приложение > Разработчикам. Во вкладке Готовые сценарии перейдите в карточку Другое - Создайте входящий вебхук, исходящий вебхук или локальное приложение, после чего выберите пункт Локальное приложение - Создайте приложение самостоятельно или закажите разработку у наших партнеров.

Битрикс24. Раздел Приложение - Разработчикам
Битрикс24. Раздел Приложение - Разработчикам
Битрикс24. Другое - Создайте входящий вебхук, исходящий вебхук или локальное приложение.
Битрикс24. Другое - Создайте входящий вебхук, исходящий вебхук или локальное приложение.
Битрикс24. Локальное приложение - Создайте приложение самостоятельно или закажите разработку у наших партнеров.
Битрикс24. Локальное приложение - Создайте приложение самостоятельно или закажите разработку у наших партнеров.

В появившемся окне настроек локального приложения заполните поле Путь вашего обработчика, установите галочку Использует только API, а также добавьте право Пользователи (user). Путь обработчика будет иметь вид [YOU_MOODLE]/admin/oauth2callback.php, где [YOU_MOODLE] - ссылка на ваш сайт с LMS Moodle. Обратите внимание, что для успешной работы OAuth 2.0 ваш сайт должен использовать протокол HTTPS.

Битрикс24. Настройка локального приложения.
Битрикс24. Настройка локального приложения.

После заполнения полей и нажатия кнопки Сохранить в форме появится поля Код приложения (client_id) и Ключ приложения (client_secret). Необходимо скопировать и сохранить значения этих полей, так как эта информация нам понадобится в дальнейшем при настройке LMS Moodle. При необходимости эту информацию всегда можно посмотреть в разделе Приложения > Разработчикам > Интеграции, нажав на раскрывающееся меню слева в строке и перейдя в раздел Редактирование.

Битрикс24. Код приложения и Ключ приложения для протокола OAuth 2.0.
Битрикс24. Код приложения и Ключ приложения для протокола OAuth 2.0.

На этом шаге этап настройки Битрикс24 завершен. Для дальнейшего удобства можно создать нового пользователя, от имени которого будем проверять, как работает интеграция Битрикс24 и LMS Moodle.

Настройка LMS Moodle

Для осуществления необходимых настроек будем использовать LMS Moodle 4.1, которая остаётся одной из самых популярных сборок на текущий момент, даже не смотря на выход более актуальных версии.

В первую очередь в LMS Moodle необходимо перейти в раздел Администрирование > Плагины > Аутентификация > Настройки аутентификации и убедиться, что на сервере установлен (входит в базовую установку) и активирован плагин OAuth 2. Для активации плагина необходимо нажать на иконку глаза в столбце Включить.

LMS Moodle. Настройка аутентификации. Плагин OAuth 2.
LMS Moodle. Настройка аутентификации. Плагин OAuth 2.
Общую информацию по настройке плагина OAuth 2.0 в LMS Moodle можно найти в англоязычной документации на официальном сайте.

Следующим шагом перейдём на страницу настроек плагина OAuth 2, для этого необходимо кликнуть на соответствующий пункт в строке активированного плагина. Как следует из пояснения на странице, блокировка полей пользователя позволяет задать какие из полей профиля будут доступны пользователю для редактирования. Здесь можно порекомендовать заблокировать те поля, которые будут передаваться из Битрикс24.

LMS Moodle. Плагин OAuth 2 - блокировка полей пользователя.
LMS Moodle. Плагин OAuth 2 - блокировка полей пользователя.

Теперь приступаем непосредственно к настройкам протокола OAuth 2.0 Переходим в раздел Администрирование > Сервер > Службы OAuth 2. На странице по умолчанию доступны разные варианты служб. К сожалению Битрикс24 среди них отсутствует, поэтому выбираем самый подходящий вариант - Пользовательский.

LMS Moodle. Службы OAuth 2 - добавление пользовательских настроек.
LMS Moodle. Службы OAuth 2 - добавление пользовательских настроек.

При создании новой службы необходимо указать Название, ID пользователя, Пароль клиента, а также Базовый URL-адрес службы. В качестве ID пользователя необходимо указать Код приложения (client_id), а полю Пароль клиента будет соответствовать Ключ приложения (client_secret) скопированные из настроек приложения в Битрикс24. В поле Базовый URL-адрес службы указываем адрес Битрикс24. Задаем, где может использоваться данная служба - Только страница входа. Также настраиваем поля Области, включенные в запрос для входа - указываем разрешения заданные при создании приложения в Битрикс24 - user crm.

LMS Moodle. Пользовательская служба OAuth 2.
LMS Moodle. Пользовательская служба OAuth 2.

Если оставить включенным пункт Требовать подтверждение адреса электронной почты, то при первом входе пользователя Битрикс24 в LMS Moodle потребуется подтверждение электронного адреса. На полученный из Битрикс24 электронный адрес пользователя будет выслано письмо со ссылкой для подтверждения адреса. Эта мера не всегда оправдана, так как обычно электронный адрес уже подтверждён в самом Битрикс24.

Далее необходимо настроить Конечные точки и Сопоставления пользовательских полей для эмитента Bitrix24, который мы добавили. Задать настройки можно через соответствующие кнопки.

LMS Moodle. Пользовательская служба OAuth 2 - эмитент Bitrix24.
LMS Moodle. Пользовательская служба OAuth 2 - эмитент Bitrix24.

Конечные точки, это адреса Битрикс24, с которыми будет взаимодействовать LMS Moodle при авторизации пользователя.

Здесь необходимо задать следующие параметры. Обратите внимание, что [YOU_BITRIX24], это полная ссылка на Битрикс24.

authorization_endpoint - [YOU_BITRIX24]/oauth/authorize/
Используется для запроса авторизации и подтверждения пользователя.

token_endpoint - [YOU_BITRIX24]/oauth/token/
Используется для получения ключа безопасности для остальных запросов.

userinfo_endpoint - [YOU_BITRIX24]/rest/user.current
Обращение к REST API Битрикс24 для получения информации о пользователе.

LMS Moodle. OAuth 2 - настройка конечных точек для Bitrix24.
LMS Moodle. OAuth 2 - настройка конечных точек для Bitrix24.

Сопоставления пользовательских полей - одна из важнейших настроек, от которой зависит какие данные будут передаваться из Битрикс24 в LMS Moodle. При добавлении соответствия необходимо указать имена внешнего и внутреннего полей. Внешнее поле, это параметр передаваемый методом user.current из Битрикс24, а внутреннее поле - соответствующее ему поле профиля пользователя в LMS Moodle. Полный список полей Битрикс24 можно найти в официальной документации по ссылке.

В нашем случае используем минимальный набор полей и указываем лишь базовые соответствия. При необходимости сюда также можно добавить соответствия для заполнения дополнительных полей профиля LMS Moodle.

result-XML_ID - username
В качестве
username используем ID текущего пользователя в Битрикс24.

result-NAME - firstname
Имя пользователя.

result-LAST_NAME - lastname
Фамилия пользователя.

result-SECOND_NAME - middlename
Отчество пользователя.

result-EMAIL - email
Электронная почта.

Обратите внимание, что все поля Битрикс24 имеют приставку "result-" это связано с особенностью работы метода user.current который возвращает многомерный массив, содержащий всю необходимую нам информацию во вложенном элементе result.
LMS Moodle. OAuth 2 - настройка сопоставления пользовательских полей для Bitrix24.
LMS Moodle. OAuth 2 - настройка сопоставления пользовательских полей для Bitrix24.

Если мы всё сделали правильно, то на странице входа в LMS Moodle появится дополнительная опция: Вход с использованием учетной записи - Битрикс24.

-14

Переходим по ссылке и попадаем на страницу авторизации Битрикс24. Здесь требуется ввести электронный адрес и пароль, которые были указаны при регистрации на сайте Битрикс24, или данные тестового пользователя, если вы его добавляли ранее. Над формой авторизации можно видеть сообщение в котором указан адрес вашего Битрикс24.

Битрикс24. Форма авторизации для входа через LMS Moodle.
Битрикс24. Форма авторизации для входа через LMS Moodle.

После авторизации вы будете автоматически перенаправлены на главную страницу LMS Moodle. При первом входе для каждого пользователя Битрикс24 создаётся отдельный профиль. Если какое-то из обязательных полей профиля пользователя в LMS Moodle автоматически заполнить не удалось, то на экране отобразится форма для заполнения.

Переходим в свой профиль и видим, что поля Фамилия, Имя и Адрес электронной почты заблокированы для редактирования. Они будут автоматически обновляться из Битрикс24 при каждом новом входе. Как это работает можно проверить, если отредактировать данные в профиле Битрикс24 или добавить новые Сопоставления пользовательских полей в эмитент Bitrix24 службы OAuth 2.

LMS Moodle. Профиль пользователя Битрикс24.
LMS Moodle. Профиль пользователя Битрикс24.

Как администратор LMS Moodle мы видим учетную запись из Битрикс24 в списке пользователей. С этим пользователем можно работать как со всеми остальными: добавлять в группы, назначать в курсы и т.п.

LMS Moodle. Список пользователей.
LMS Moodle. Список пользователей.

При необходимость администратор может отредактировать профиль пользователя Битрикс24. Здесь надо обратить внимание, что поле Логин не доступно для редактирования, а в качестве метода аутентификации указан OAuth 2. Также не забывайте, что все поля указанные в Сопоставлении пользовательских полей в эмитент Bitrix24 службы OAuth 2 будут обновляться автоматически при входе данного пользователя.

LMS Moodle. Редактирование профиля пользователя Битрикс24.
LMS Moodle. Редактирование профиля пользователя Битрикс24.

В завершении хочется еще раз подчеркнуть, что мы рассмотрели самый простой способ создания единой авторизации пользователей Битрикс24 в LMS Moodle. Существуют и другие способы, например SSO или LDAP, которые способны обеспечить более глубокую интеграцию систем, но потребуют привлечения технических специалистов. Все вышеописанные настройки можно сделать самостоятельно, для чего потребуется только соответствующий уровень доступа к Битрикс24 и LMS Moodle.