Интеграция с Open edX

1. Настройка сервера Open edX

Интеграция системы прокторинга ProctorEdu с Open edX осуществляется по стандарту IMS LTI.

1.1 SSL-сертификат

На веб-сервере должен быть установлен валидный SSL-сертификат, чтобы страницы Open edX открывались по протоколу HTTPS. Это требование политики безопасности браузера, которая не позволяет получить доступ к камере и микрофону по незащищенному протоколу HTTP.

Можно выпустить бесплатный SSL-сертификат Let’s Encrypt. Проверить валидность сертификата на сервере можно с помощью сервиса SSLChecker.com.

1.2 Открытие страниц в IFRAME

Страница экзамена (теста) открывается в IFRAME системы прокторинга после запуска сеанса прокторинга. Чтобы страница корректно открылась в IFRAME на веб-сервере Open edX требуется правильно настроить заголовки Content-Security-Policy и X-Frame-Options на страницах теста (либо не передавать эти заголовки вообще). Также в Chrome 80+ внесены изменения в политику установки файлов куки Set-Cookie, которая для кросс-доменных куков требует добавить два параметра "SameSite=None" и "Secure".

В данной инструкции обход ограничения кросс-доменной политики безопасности браузера осуществляется путем размещения кода SDK на странице курса Open edX. Поэтому менять настройки веб-сервера не требуется.

2. Настройка прокторинга в курсе

2.1 Включение LTI инструментов

Прежде чем использовать в курсах LTI инструмент прокторинга, необходимо включить LTI инструменты в Студии (Studio) Open edX. Полное описание настроек LTI приведено в документации edX.

Для включения LTI инструментов в Студии нужно:
1) В главном меню откройте раздел "Settings" > "Advanced Settings".
2) В поле "Advanced Module List" добавьте элемент "lti_consumer", если элементов несколько, то они разделяются запятой.
3) Сохраните настройки кнопкой "Save Changes".

2.2 Настройка ключей LTI

Для работы прокторинга требуется передача аутентификационных данных (ключа клиента и секретного ключа). Эти данные выдаются для каждого сервера прокторинга, где используется интеграция LTI, и их нужно указать в настройках Студии.

Параметры аутентификации внешнего инструмента LTI указываются следующим образом:

1) В главном меню откройте раздел "Settings" > "Advanced Settings".
2) В поле "LTI Passports" укажите ключи LTI в формате ["your_lti_id:client_key:client_secret"], где:

  • your_lti_id — идентификатор паспорта (например, "proctordu_lti", который потребуется указать при добавлении LTI инструмента в курс;
  • client_key — ключ клиента (выдается для сервера прокторинга);
  • client_secret — секретный ключ (выдается отдельно для каждого сервера прокторинга).

Например: ["proctoredu_lti:demo:secret"]
3) Сохраните настройки кнопкой "Save Changes".

2.3 Размещение SDK на странице курса

Система прокторинга открывает страницы курса в IFRAME после запуска сессии прокторинга. Чтобы обойти ограничения политики безопасности браузера (кросс-доменная политика), связанные с открытием страниц Open edX в IFRAME внутри прокторинга, необходимо запускать прокторинг и Open edX на одном домене. Для этого нужно разместить код запуска прокторинга (SDK) на одной из страниц курса. Сделать это можно следующим образом:
1) В главном меню откройте раздел "Content" > "Pages".
2) В разделе "Pages" нажмите кнопку "Add a New Page", чтобы добавить новую страницу.
3) Откройте редактор страницы кнопкой "EDIT".
4) Зайдите в настройки редактора кнопкой "SETTINGS" и укажите следующие значения:
  • Display Name — отображаемое название страницы, можно назвать "Proctoring".
  • Editor — режим работы редактора, нужно выбрать "Raw", чтобы можно было вставлять HTML-разметку.
  • Hide Page From Learners — скрыть страницу из меню курса для учеников, однако страница будет доступна по прямой ссылке,нужно выбрать "True".
5) Сохраните настройки кнопкой "Save".
6) В редакторе страницы вставьте код для подключения SDK прокторинга:
<script src="https://demo.proctoring.online/sdk/supervisor.js" data-supervisor="start"></script>
Вместо "demo.proctoring.online" укажите домен вашего сервера прокторинга.

7) Сохраните изменения страницы кнопкой "Save".
8) Сохраните прямую ссылку на созданную страницу, она понадобится при настройке LTI инструмента. Для этого перейдите в режим "View Live" (роль "Staff"), откройте страницу "Proctoring" и скопируйте ссылку из строки адреса браузера.
9) Преобразуйте полученную ссылку в кодировку URL Encoding, это можно сделать онлайн тут. В результате должна получиться строка подобного вида:

Оригинальная ссылка:
https://demo.openedx.overhang.io/courses/course-v1:edX+DemoX+Demo_Course/f282cfc230d04a14b31ac42df22daa1b/

Закодированная ссылка:
https%3A%2F%2Fdemo.openedx.overhang.io%2Fcourses%2Fcourse-v1%3AedX%2BDemoX%2BDemo_Course%2Ff282cfc230d04a14b31ac42df22daa1b%2F

2.4 Настройка элемента прокторинга

1) Добавьте в курс новый элемент, в котором будет использоваться LTI инструмент прокторинга.
2) Выберите "Advanced" из предложенных вариантов в меню выбора нового
3) Выберите "LTI Consumer" из предложенных вариантов.
4) Нажмите "EDIT" на панели настроек блока "LTI Consumer".
5) Далее, в редакторе компонентов, заполните поля согласно описанию.
  • LTI Version — версия LTI, нужно выбрать "LTI 1.1/1.2".
  • LTI ID — ранее указанный идентификатор в "LTI Passports", например: "proctoredu_lti".
  • LTI URL — страница LTI инструмента в формате "https:///api/auth/?redirect=", где — домен вашего сервера прокторинга, — название провайдера интеграции, — закодированная ссылка на страницу с кодом SDK, которая была создана ранее.
  • Custom Parameters — параметры сессии прокторинга в формате "КЛЮЧ=ЗНАЧЕНИЕ" (через запятую, если несколько параметров): ["url=https://your-edx-server/path/to/quiz","template=default"], где url — адрес страницы экзамена (теста), узнать ее можно перейдя в режиме "View Live" (роль "Learner") в нужный раздел курса и скопировав ссылку из строки адреса браузера; (этот параметр можно не указывать, если URL указан в шаблоне сеанса прокторинга); template — идентификатор шаблона сеанса прокторинга, который настраивается через админку прокторинга.
  • LTI Launch Target — способ отображения LTI контента, нужно выбрать "New Window" (новое окно).
  • Scored — получать оценку LTI инструмента, нужно выбрать "True" (да).
6) После завершения настройки нажмите "Save".
7) Опубликуйте изменения кнопкой "Publish".

2.5 Ограничение доступа к тестовому элементу

Обычно требуется ограничить доступность тестового элемента до момента, пока прокторинг не будет запущен. Чтобы участник не смог открыть содержимое тестового элемента до начала сессии прокторинга.
Для этого в Студии нужно выполнить следующие настройки (полное описание настроек приведено в документации):
1) Включите предварительные условия подраздела (Subsection Prerequisites):
  • В главном меню откройте раздел "Settings" > "Advanced Settings".
  • В поле "Enable Subsection Prerequisites" укажите значение "true".
  • Сохраните настройки кнопкой "Save Changes".
2) Поместите элемент прокторинга (инструмент LTI) в одну секцию с тестовым элементом, поставив его перед ним.
3) Зайдите в настройки элемента прокторинга (инструмент LTI).
4) Включите опцию "Make this subsection available as a prerequisite to other content" на вкладке "Advanced".
5) Сохраните настройки кнопкой "Save".
6) Зайдите в настройки тестового элемента на вкладку "Advanced".
7) Укажите следующие параметры:
  • Выберите в выпадающем списке "Prerequisite" название элемента прокторинга.
  • Укажите в поле "Minimum Score": 0%
  • Укажите в поле "Minimum Completion": 100%
8) Сохраните настройки кнопкой "Save".

2.6 Использование прокторинга

На странице элемента прокторинга (LTI инструмента) пользователи увидят кнопку, нажав на которую страница системы прокторинга откроется в соседней вкладке.
Пользователи с ролью ученика (студента) попадут в сессию прокторинга, где в IFRAME откроется страница тестового элемента, которая была указана в настройках инструмента LTI в пользовательском параметре "url" (либо указана в шаблоне сеанса через админку прокторинга).

Пользователи с ролью инструктора или администратора попадут в интерфейс проктора, где смогут наблюдать за сеансами данного экзамена и просматривать протоколы.

3. Настройка интеграции в системе прокторинга

Чтобы подключить интеграцию с Open edX в системе прокторинга необходимо импортировать следующую конфигурацию хоста по аккаунтом менеджера:
<!--JSON-->

{
  "id": "<Host_ID>",
  "key": "<License_Key>",
  "params": {
    "webhooks": {
      "openedx": {
        "authorizer": "lti",
        "integrator": "lti",
        "consumerKey": "demo",
        "consumerSecret": "secret",
        "callbackURL": "query.redirect",
        "profile": {
          "username": "payload.user_id",
          "role": "payload.roles.find(v=>/Instructor/.test(v))?'proctor':'student'",
          "nickname": "payload.lis_person_name_full",
          "lang": "(payload.launch_presentation_locale||'').slice(0,2)",
          "group": "['G',payload.context_id,payload.resource_link_id].join('-')",
          "referrer": "payload.launch_presentation_return_url",
          "labels": "payload.lis_person_contact_email_primary"
        },
        "register": {
  "identifier": "[payload.user_id,payload.context_id,payload.resource_link_id].join('-').replace(/[^A-Za-z0-9_-]+/g,'_')",
          "template": "payload.custom_template||'default'",
          "subject": "payload.resource_link_title",
          "members": "payload.custom_members==='@'?user.group:payload.custom_members",
          "url": "payload.custom_url||payload.launch_presentation_return_url",
          "tags": "payload.lis_person_contact_email_primary"
        },
        "start": true,
        "stop": true,
        "pause": true,
        "submit": true
      }
    },
    "sdk": {
      "iframe": {
        "sandbox": "allow-scripts allow-forms allow-modals allow-same-origin allow-popups allow-downloads"
      }
    }
  }
}
где поля "consumerKey" и "consumerSecret" нужно заменить на случайно сгенерированную последовательность символов (латинские буквы разного регистра и цифры, рекомендуемая длина 24 символа); "id" — идентификатор хоста (если его не указывать, создастся новый хост); "key" — лицензионный ключ данного хоста.