2008-12-09 1 views
5

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

Что бы я хотел сделать, так это: после того, как кто-то заходит на сайт Joomla, укажите ссылку на сайт Moodle, который будет тихо регистрировать их, что-то вроде притворения решения с одним знаком входа. Пароли в Joomla являются MD5'd, и у каждого есть своя секретная соль.

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

Я рассматриваю возможность изменения модуля аутентификации в Moodle, чтобы, если предоставленный пароль соответствует определенным критериям (например, это 32 шестнадцатеричных символа), то не делайте MD5 перед сравнением с версией Joomla - проблема с этим что любой может (после обнаружения зашифрованного пароля) использовать его для входа в систему. Мне нужен специальный способ отправки зашифрованного пароля из Joomla в Moodle и для сообщения Moodle для обработки этого запроса на вход по-разному.

Любые мысли?

ответ

4

Вы можете сделать следующее для безопасного единого входа-одно решение:

  • Генерация случайных (с ПСЧ) основе маркеров для пользователя Joomla (хранить это)
  • Отправить этот маркер внутри (с помощью веб-сервис и т. д., -поддерживайте его по HTTPS- или локальному источнику данных) до Moodle
  • При отправке этого токена вы также должны сообщать Moodle об идентификаторе пользователя, к которому принадлежит токен (поэтому отправляет токен + идентификатор пользователя)
  • Сохраните этот токен + userid в Moodle
  • Создайте ссылку с этим токеном в Joomla с этим токеном (вы можете использовать querystring, как только вы истекаете токен после первого использования, но POST - лучшая идея)
  • Когда вы видите этот токен в Moodle, зарегистрируйте связанного пользователя (так что это будет безопасно против ответных атак и т. д.)
0

Если вы используете Joomla! 1.5, не забудьте пользовательские плагины. Взгляните на плагины/user/example.php. Вы можете захватить пароль во время события onLoginUser, которое может помочь вам перевести системы.

1

Не могли бы вы использовать Pro Moodle (http://www.promoodle.com/) или JFusion (http://www.jfusion.org/), которые пропорциональны созданию единого входа в систему для системы Joomla/Moodle.

Существует также руководство находится здесь: http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf на «мост между Moodle и Joomla

Существует руководство для изменения кода Moodle для создания единого входа на систему здесь:. (! Использовать с осторожностью) http://moodle.org/mod/forum/discuss.php?d=45126#211486 .

Ваш уровень может варьироваться, пытаясь использовать эти решения в разных областях.

Смежные вопросы