Перейти к основному содержимому

Сервисы OAuth 2

Сервисы OAuth2​


  • YooLearn поддерживает сервисы OAuth 2, которые могут использоваться любым плагином для предоставления аутентифицированного доступа к внешним сервисам — либо от имени текущего пользователя, либо с использованием системной учетной записи.
  • Сервисы OAuth 2 применяются, например, для реализации функции "Войти через Google/Microsoft/Facebook" на странице входа в систему, а затем для совместного использования этой аутентифицированной сессии с хранилищами, такими как Google Drive и OneDrive, без необходимости повторной аутентификации.
  • Плагины могут использовать сервисы OAuth 2, даже если они не задействованы на странице входа. Также возможен одновременный вход в несколько сервисов.

Вход​


См. раздел Аутентификация OAuth 2 для получения подробной информации о том, как включить эту функцию.

Open ID Connect​


Open ID Connect — это стандарт для сервисов аутентификации на основе OAuth 2, который упрощает настройку рабочей системы входа. Если используемый вами сервис поддерживает Open ID Connect, достаточно указать его базовый URL — YooLearn автоматически получит все необходимые дополнительные данные, запросив "документ обнаружения", который должен располагаться по адресу: <issuer base url>/.well-known/openid-configuration.

Конфигурация поставщика услуг​


Терминология:
В данном контексте YooLearn выступает в роли "клиента", а внешний сервис (Google, Facebook, …) — "поставщиком" услуг.

Настройка OAuth 2:
Для настройки OAuth 2-сервисов перейдите в раздел: "Администрирование" → "Сервер" → "Службы OAuth 2".

[[File:OAuth - Services.png/|border/|center/|frameless/|900x900px/|]]

Внизу вы видите список всех поддерживаемых сервисов. Нажмите соответствующую кнопку, чтобы добавить предварительно настроенный сервис — это откроет форму создания нового сервиса. Все необходимые параметры уже заполнены: вам останется только ввести ID клиента и Пароль клиента выбранного сервис-провайдера.

Как получить ID клиента и пароль?​

ID клиента и пароль предоставляются провайдером, поэтому их необходимо настроить вне YooLearn — непосредственно у провайдера. Инструкции для популярных OAuth 2-провайдеров доступны по ссылкам ниже:

Для пользовательских сервисов потребуется самостоятельно выяснить, как получить ID клиента и пароль. Провайдер необходимо настроить, указав redirect URL для YooLearn:
<wwwroot>/admin/oauth2callback.php

Например, если ваш сайт YooLearn доступен по адресу https://moodle.example.com, redirect URL будет: https://moodle.example.com/admin/oauth2callback.php.

Добавление эмитента​

По возможности используйте один из предустановленных сервисов, если ваш есть в списке. Отдельные параметры можно настроить позже.

Выберите из списка, после чего отобразятся следующие настройки:

Настройки эмитента

В качестве общего правила: не меняйте никакие настройки, кроме Имени, ID клиента, Пароля клиента и Базового URL службы, если только это не указано в инструкции по установке. В остальном значения по умолчанию обычно подходят, особенно если вы используете одну из предварительно настроенных служб.

Пояснения к некоторым настройкам см. в разделе "Дополнительные настройки" (ниже).

Домены для входа​

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

Это ограничение будет действовать дополнительно к настройкам разрешенных и запрещенных доменов электронной почты в разделе Управлении аутентификацией. Однако последние проверяются только при создании пользователя и не проверяются повторно при входе.

Дополнительные настройки​

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

Дополнительные параметры настройки для эмитентов OAuth 2

Редактировать
Перейдите снова на экран настроек.

Настройка конечных точек
Определите конечные точки издателя — URL-адреса, к которым будет подключаться YooLearn. Для аутентификации пользователей обязательны следующие конечные точки:

  • authorization_endpoint
  • token_endpoint
  • userinfo_endpoint (Пример на изображении ниже).

Настройка сопоставления полей пользователя
Если вы используете издателя в качестве поставщика удостоверений, настройте, как данные из ответа провайдера (с userinfo_endpoint) будут сопоставляться с полями пользователя в YooLearn.

Необходимо задать сопоставления для обязательных полей YooLearn:

  • firstname (имя)
  • lastname (фамилия)
  • email (электронная почта)

Это обеспечит корректное создание учетной записи при входе. Если какое-либо из этих полей не будет сопоставлено, пользователь будет перенаправлен на страницу Редактирование профиля для ввода недостающей информации.
(Пример на изображении ниже).

Удалить
Удалить конфигурацию издателя.

Отключить
Пометить издателя как неактивного (плагины не смогут его использовать).

Переместить вверх/вниз
Изменить порядок отображения сервисов на странице входа.

Пример конечных точек для пользовательской службы

Пример сопоставления полей пользователя

Подключение системной учётной записи​

Системная учетная запись может быть подключена. Это может потребоваться плагинам для обеспечения расширенной функциональности, такой как доступ к управляемым ссылкам из хранилища Nextcloud, Google Drive или OneDrive.

Подключение системной учётной записи

Чтобы подключиться к системной учётной записи, нажмите значок "Подключение" (полуоткрытый прямоугольник со стрелкой), затем выберите соответствующую учётную запись.

Системная учётная запись должна быть выделена исключительно для этих целей. Для неё не требуется привязка к email-адресу. Эта учётная запись не предназначена для входа в систему.

Страница настроек уведомлений

Обновление токена доступа​

Запланированная задача регулярно обновляет OAuth-токен для сервисных аккаунтов (Обновить токены OAuth для системных учётных записей, /core/oauth2/refresh_system_tokens_task). Если по какой-либо причине токен не может быть обновлён (например, при истечении срока авторизации), все администраторы YooLearn получат уведомление.

Если администратор не хочет получать эти уведомления, их можно отключить на странице Настройки уведомлений. Опция, которую необходимо деактивировать: "Критические ошибки на сайте".

Внимание! Если пользователь отключит уведомления "Критические ошибки на сайте", он может не получать и другую важную информацию, связанную с проблемами на сайте. Например:

  • уведомления о результатах антивирусного сканирования;
  • любые сообщения от сторонних плагинов, использующих системный провайдер сообщений errors.

На данный момент не так много уведомлений отправляется через этот провайдер, но, к сожалению, нет возможности вывести их полный список. Поэтому рекомендуется проверить, какие уведомления приходили до отключения опции и какие продолжают приходить после.

Расширенные настройки эмитента​

Аутентификация запросов токенов через HTTP-заголовки
Согласно стандарту OAuth 2, это должно быть общепринятой практикой. Однако большинство провайдеров не поддерживают данный метод и требуют указания аутентификационных данных в теле запроса. Для большинства конфигураций оставляйте этот флажок отключённым, если в инструкциях не указано обратного.


Оригинал: https://docs.moodle.org/502/en/OAuth_2_services