При встраивании защищенных учебников в Moodle может потребоваться, чтобы пользователь Moodle был авторизован и в ELiS. При этом хочется, чтобы пользователь не авторизовался отдельно на разных порталах, а вводил логин и пароль только один раз. Данная задача решается реализацией технологии единого входа (single sign-on).
Для ELiS задачу можно решить с помощью бесплатного модуля CAS для Drupal и соответствующей настройки плагина CAS в Moodle, входящего в стандартную поставку.
Технически схема работы будет следующая:
- пользователь открывает сайт Moodle и нажимает кнопку авторзиации;
- Moodle перенаправляет пользователя на сайт ELiS, где он вводит логин и пароль;
- при успешном вводе логина и пароля, пользователь перенаправляется на сайт Moodle с тикетом, по которому Moodle также обращается в ELiS и узнает его логин без дополнительных действий со стороны пользователя;
Содержание
Настройка ELiS[править]
Установите модуль CAS и в списке серверов активируйте CAS Server.
Настройте модуль CAS Server, добавив две строчки, которые являются URL адресом сайта Moodle и любых его URL, например:
https://moodle.example.com https://moodle.example.com/*
Настройка ELiS закончена.
Настройка Moodle[править]
В плагинах аутентификации активируется CAS.
Введите название сервера (например: elis.example.com), номер порта (например: 443) и базовый адрес CAS-провайдера (например: cas/).
Настройка Moodle закончена.
Замечания по назначению групп пользователей[править]
ELiS может сообщить группы (роли) пользователя в атрибутах CAS по запросу https://elis.example.com/cas/serviceValidate?service=sameService&ticket=ST-a3Hbe2Knup:
<cas:serviceResponse> <cas:authenticationSuccess> <cas:user>ivanov</cas:user> <cas:attributes> <cas:attraStyle>Jasig</cas:attraStyle> <cas:uid>23427</cas:uid> <cas:mail>ivanov@example.com</cas:mail> <cas:created>1467123997</cas:created> <cas:timezone>Asia/Karachi</cas:timezone> <cas:language/> <cas:drupal_roles>authenticated user</cas:drupal_roles> </cas:attributes> </cas:authenticationSuccess> </cas:serviceResponse>
Но модуль CAS в Moodle не подхватывает группы, сообщаемые сервером ELiS. Для настройки групп, в Moodle требуется настроить получения групп из LDAP-сервера организации. Для реализации единой точки входа, в таком случае, рекомендуется также и ELiS настроить на авторизацию пользователей из LDAP с помощью бесплатного модуля ldap.
Альтернатива - использование Keycloak[править]
Альтернативно, если вы не хотите первичных пользователей иметь в Drupal, а например хотите их хранить в LDAP, можно использовать сервер Keycloak для организации SSO: https://elibsystem.ru/node/409 и уже к нему подключить через OAuth2 с OpenID Connect и Moodle и ELiS.