Интеграция. Единый вход.

Интеграция. Единый вход.

от Михаил Иванов -
Количество ответов: 3
Здравствуйте. Суть проблемы в следующем, есть наш ресурс с которым работают пользователи, также по этой тематике в помощь используем moodle3.1. В moodle настроил авторизацию из внешней базы, все хорошо, Но хотелось бы добиться Единого входа, т.е при входе на наш сайт, создавалась бы сессия и на moodle... в какую сторону капать подскажите... в php более-мение разбираюсь но пока тяжеловато...
В ответ на Михаил Иванов

Re: Интеграция. Единый вход.

от Alex Djachenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода Изображение пользователя ООО "Открытые Технологии" Изображение пользователя Тестер Moodle Изображение пользователя Эксперт по Moodle

Если достаточно общего пароля, используйте метод аутентификации по промежуточной SQL базе данных. Если нужна сквозная аутентификация - современный и удобнвый способ, это реализовать поддержку протокола OAuth2.

В ответ на Михаил Иванов

Re: Интеграция. Единый вход.

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Хорошего и готового способа реализации sso с любого сайта на moodle сейчас нет. Мной многолетний опыт показывает, что особой необходимости в sso нет (я писал свою sso-систему на несколько сайтов), главное, чтобы один пароль подходил ко всем проектам. А там пользователи всё-равно посохраняют пароли в браузере и по привычке просто не будут обращать внимание на страницу ввода пароля.

1. Можете реализовать на своем сайте провайдера OAuth2 и допилить плагин Oauth2, чтобы он обращался к вашему сайту.

2. а) ваш сайт должен кэшировать логин/пароль пользователя в открытом виде в сессионной переменной. б) в moodle настраиваете альтернативную страницу входа в систему, указываете специальную страницу вашего сайта. в) пользователь, заходя в moodle автоматически переходит на эту страницу. Эта страница берет логин/пароль из сессии и перенаправляет пользователя на страницу /login/index.php, передавая логин/пароль в качестве параметров, соответстенно, moodle по ним и создает сессию. В этом варианте код moodle допиливать не нужно.

3. Поскольку передавать логин/пароль в открытом виде через веб неправильно даже пользователю, у которого была соответствующая сессия, вы начинаете развивать эту тему, и передаете через веб не логин/пароль, а некий токен. Получив этот токен написанная вами страница в moodle отправляет этот токен на проверку на исходный сайт, который проверяет данный токен и возвращает вместо него данные пользователя, которые потом используются для созданиии сессии в moodle. По сути получается, что вы пишите свой плагин аутентификации, которые авторизует пользователя по этому токену. И, соответственно страницы на вашем сайте, которые создают токен и его проверяют.

4. Со временем Вы решаете, что делать дополнительный запрос между moodle и вашим сайтом для получения данных пользователей нецелесообразно. Гораздо лучше все данные сразу зашифровать открытым ключом и подписать электронной подписью, а moodle с помощью закрытого ключа расшифрует данные, убедится с помощью электронной подписи, что они не поддельные, и создаст на их основе сессию. Таким образом вы, постепенно, реализуете у себя тот же самый OAuth. Но в любом случае потребуется программирование как на стороне Вашего сайта, так и на стороне Moodle