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

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

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

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

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

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

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

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